python写csv乱码的问题

主要是要写个BOM

import json
import csv

f = open('d:\\brand.json')
data = json.load(f)
f.close()

file = open("d:\\brand.csv", "wb+")
file.write('\xEF\xBB\xBF');
f = csv.writer(file)
# Write CSV Header, If you dont need that, remove this line
f.writerow([u"ID", u"英文名", u"中文名", u"品牌名", u"状态"])

for x in data:
# print x.__class__
print [x["VALUE_ID"][0],
x["NAME_EN"][0] if x.has_key("NAME_EN") else "",
x["NAME_CN"][0] if x.has_key("NAME_CN") else "",
x["NAME"][0],
x["STATUS"][0] if x.has_key("STATUS") else ""
]
f.writerow([x["VALUE_ID"][0],
x["NAME_EN"][0] if x.has_key("NAME_EN") else "",
x["NAME_CN"][0] if x.has_key("NAME_CN") else "",
x["NAME"][0],
x["STATUS"][0] if x.has_key("STATUS") else ""
])
### 解决 Python 输出 CSV 文件时中文字符显示为乱码的方法 #### 编码设置的重要性 当处理包含非ASCII字符的数据(如中文)并将其CSV文件时,选择合适的编码至关重要。UTF-8是一种广泛使用的多字节编码方式,能够很好地表示各种语言的文字。然而,在某些情况下,特别是对于Microsoft Excel这样的应用程序,默认的UTF-8可能无法正确解析这些特殊字符,从而导致乱码现象。 为了确保生成的CSV文件能在Excel中正常查看,推荐使用带有BOM (Byte Order Mark) 的 UTF-8 编码——即 `utf-8-sig` 。这种编码会在文件开头加入几个不可见的标记位,帮助程序识别后续内容是以何种形式存储的[^2]。 #### 正确使用标准库 csv 模块 如果仅依赖于Python自带的标准库来创建CSV文件,则需要注意指定正确的编码参数: ```python import csv data = [['城市'], ['北京'], ['上海']] with open('cities.csv', mode='w', newline='', encoding='utf-8-sig') as file: writer = csv.writer(file) writer.writerows(data) print("CSV 文件已成功创建.") ``` 上述代码片段展示了如何利用Python内建的`csv`模块编含有中文的城市名称到名为`cities.csv`的新文件里,并通过设定`encoding='utf-8-sig'`解决了潜在的乱码问题[^1]。 #### 利用 Pandas 库简化操作流程 除了官方提供的工具外,第三方库Pandas也提供了一种更简便的方式来处理表格型数据集。它不仅支持多种输入输出格式转换,还允许用户轻松调整导出过程中的细节配置项,比如编码类型等: ```python import pandas as pd df = pd.DataFrame({'城市': ['北京', '上海']}) df.to_csv('pandas_cities.csv', index=False, encoding='utf-8-sig') print("使用Pandas创建的CSV文件已完成.") ``` 这段脚本说明了怎样借助Pandas快速构建一个简单的DataFrame对象并将之保存成CSV文档,期间同样指定了适合Excel阅读器理解的编码方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值