iso*_*man 3 python unicode excel utf-8
如果我使用notepad ++打开csv文件,建议正确显示特殊字符.将csv文件导入excel时,它们也会正确显示.如何生成由excel打开时正确显示的csv文件,因为文件导入不是用户的选项
我正在生成一个使用Excel处理的csv文件.使用excel打开文件时,"é"等特殊字符无法正确显示
这是我用来生成csv文件的poc
# -*- coding: utf-8 -*-
import unicodecsv as csv
import codecs
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
def write_csv(file,headers):
resultFile =codecs.open(file, "w+", "utf-8")
#headers=[s.encode('utf-8') for s in headers]
wr = csv.writer(resultFile, dialect='excel',delimiter=";",encoding="utf-8")
wr.writerow(headers)
resultFile.close()
headers=[""]
headers.append("Command")
headers.append("Vérification".encode('utf-8'))
write_csv(r"C:\test2.csv",headers)
Run Code Online (Sandbox Code Playgroud)
使用Python 2解决方案unicodecsv
.请注意,unicodecsv
模块的文档应以二进制模式打开(wb
).确保编写Unicode字符串. #coding
需要支持源文件中的非ASCII字符.确保以UTF-8保存源文件.
#coding:utf8
import unicodecsv
with open('test.csv','wb') as f:
# Manually encode a BOM, utf-8-sig didn't work with unicodecsv
f.write(u'\ufeff'.encode('utf8'))
w = unicodecsv.writer(f,encoding='utf8')
# Write Unicode strings.
w.writerow([u'English',u'Chinese'])
w.writerow([u'American',u'???'])
w.writerow([u'Chinese',u'???'])
Run Code Online (Sandbox Code Playgroud)
Python 3解决方案. #coding
这里是可选的,因为它默认为UTF-8.只需确保以UTF-8保存源文件. unicodecsv
不再需要.内置csv
工作正常. csv
文档说打开文件newline=''
.
#coding:utf8
import csv
with open('test.csv','w',newline='',encoding='utf-8-sig') as f:
w = csv.writer(f)
# Write Unicode strings.
w.writerow([u'English',u'Chinese'])
w.writerow([u'American',u'???'])
w.writerow([u'Chinese',u'???'])
Run Code Online (Sandbox Code Playgroud)
小智 5
在python3中,我只是这样做:
with open(file, "w+", encoding='utf-8-sig') as f:
f.write("Vérification")
Run Code Online (Sandbox Code Playgroud)
很简单,对吧?:) 您可以在python 文档中搜索“utf-8-sig”
我使用 UTF-8 BOM 编码解决了这个问题。
\n\n# -*- coding: utf-8-sig-*-\nimport unicodecsv as csv\nimport codecs\nimport sys\nreload(sys)\nsys.setdefaultencoding("utf-8-sig")\ndef write_csv(file,headers):\n\n\n resultFile =codecs.open(file, "w+", "utf-8-sig")\n\n #headers=[s.encode(\'utf-8\') for s in headers]\n wr = csv.writer(resultFile, dialect=\'excel\',delimiter=";",encoding="utf-8-sig")\n wr.writerow(headers)\n\n resultFile.close()\n\nheaders=[""]\nheaders.append("Command")\nheaders.append("V\xc3\xa9rification")\nwrite_csv(r"C:\\Users\\ATHENA-HDA\\AppData\\Local\\Temp\\test2.txt",headers)\n
Run Code Online (Sandbox Code Playgroud)\n