Python学习日记--回来填个坑,又踩了另一个坑.解决csv文件写入乱码

本文分享了使用Python将字典转换为CSV格式的经验,探讨了编码问题对Excel兼容性的影响,并阐述了CSV文件在数据处理上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回来填个坑,Python写入csv文件不是更香吗?

学习下使用csdn的编辑器原来这样好看点

	感觉这两天脑子稀里糊涂的,给女儿写字典那块,为什么不考虑用csv做呢,那样打字典不是方便很多?
 于是就想把以前编辑好的字典,给她改称csv格式的,结果又踩坑了.
import csv
import ccenglist

file = open('english.csv', mode='w', encoding='gbk', newline='')
writeObject = csv.writer(file)

for key in ccenglist.eng.keys():
    row = []
    row.append(str(key))
    row.append(str(ccenglist.eng[key]))
    writeObject.writerow(row)
file.close()
  • 当时encoding=‘gbk’ 我用的UTF-8 ,结果用excel打开成乱码了,写字板打开正常.

ALT

  • 改成gbk正常:
  • 在这里插入图片描述

为什么改csv

	输入方便啊,不用各种格式限制,光回车换行tab换列就好了啊.
	读入也很方便啊,导入csv模块,一个open完了转成list,真香.

在这里插入图片描述

### 解决Python写入CSV文件时出现中文乱码的方法 当使用Python编写程序向CSV文件写入含有中文字符的数据时,可能会遇到乱码问题。这通常是因为文件的编码格式与Python使用的默认编码格式不匹配所致[^3]。 为了防止这种情况发生,在打开文件时指定正确的编码参数至关重要。对于包含中文字符的情况,推荐使用`utf-8-sig`作为编码方式,而不是简单的`utf-8`。这是因为UTF-8签名(BOM)能够帮助某些应用程序识别文件的实际编码格式[^5]。 下面是一个具体的例子,展示了如何通过设置合适的编码选项来避免乱码: ```python import csv data = [['城市', '人口'], ['北京', '2170万'], ['上海', '2424万']] with open('cities_population.csv', 'w', newline='', encoding='utf-8-sig') as file: writer = csv.writer(file) for row in data: writer.writerow(row) ``` 上述代码片段创建了一个名为`cities_population.csv`的新文件,并将给定的城市及其对应的人口数以表格形式存入其中。这里特别注意到了`open()`函数中的`encoding='utf-8-sig'`参数,它确保了即使是在那些可能无法自动检测到无BOM UTF-8编码的应用程序里也能正确显示汉字。 此外,如果已经存在一个带有乱码问题的老版本CSV文件,则可以通过重新读取并再次保存的方式来修正其编码错误。具体做法如下所示: ```python # 修复已有的带乱码csv文件 old_file_path = "problematic_data.csv" new_file_path = "fixed_encoding_data.csv" with open(old_file_path, 'r', encoding='latin1') as old_file,\ open(new_file_path, 'w', newline='', encoding='utf-8-sig') as new_file: reader = csv.reader(old_file) writer = csv.writer(new_file) for line in reader: writer.writerow(line) ``` 这段脚本首先尝试用一种较为宽松的方式(`latin1`)读取原始有问题的CSV文档,然后再将其内容按照新的编码标准重定向至一个新建立的目标文件内。这样做不仅解决了现有数据中存在的乱码现象,同时也为后续操作提供了更加友好的环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值