python读取和写入csv在excel乱码的解决

2018-03-27  本文已影响0人  winterfallding

有问题的代码

with open('file.csv') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)

如果有中文在csv中,print出来的第一个key中会带有\ufeff前缀,会在你用row[key]取的时候有问题,原因是excel中用了utf_8_sig编码,使用codecs模块读取文件就可以。

解决方案

with codecs.open('file.csv', 'r', 'utf_8_sig') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)

在写入csv的时候的问题

同理,由于使用utf_8_sig编码,如果使用open写入csv文件的话,用excel打开中文会出现乱码问题。

写入的解决方案

类似的,使用codecs用utf_8_sig编码写入

with codecs.open('file.csv', 'w', 'utf_8_sig') as f:
    writer = csv.writer(f, dialect='excel')
    writer.writerow(['啊', '正常', '了'])
上一篇 下一篇

猜你喜欢

热点阅读