[英]Which encoding to open utf-8 csv file in Python which opens correctly in Excel with Windows (ANSI)
[英]Issue with UTF-/ encoding on csv file for excel
如果我使用 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)
使用unicodecsv
Python 2 解决方案。 请注意, 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'中国人'])
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'中国人'])
在python3中,我只是这样做:
with open(file, "w+", encoding='utf-8-sig') as f:
f.write("Vérification")
很简单,对吧? :) 您可以在python 文档中搜索“utf-8-sig”
我使用 UTF-8 BOM 编码解决了这个问题。
# -*- coding: utf-8-sig-*-
import unicodecsv as csv
import codecs
import sys
reload(sys)
sys.setdefaultencoding("utf-8-sig")
def write_csv(file,headers):
resultFile =codecs.open(file, "w+", "utf-8-sig")
#headers=[s.encode('utf-8') for s in headers]
wr = csv.writer(resultFile, dialect='excel',delimiter=";",encoding="utf-8-sig")
wr.writerow(headers)
resultFile.close()
headers=[""]
headers.append("Command")
headers.append("Vérification")
write_csv(r"C:\Users\ATHENA-HDA\AppData\Local\Temp\test2.txt",headers)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.