gpt4 book ai didi

python - 使用 Python 打开 utf-8 格式的 csv 文件

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:55 25 4
gpt4 key购买 nike

我在这里失去了理智。我读过并尝试过很多东西,以至于我完全迷失了。我通常不使用Python,我正在尝试更新代码。以前,csv 文件不包含任何特殊字符(如“é”...),而现在包含。实际代码返回异常 UnicodeEncodeError :

try:
self.FichierE = codecs.open(self.CheminFichierE,"r", "utf-8")
self.ReaderFichierE = csv.reader(self.FichierE, delimiter=';')
except IOError:
self.TextCtrl.AppendText(u"Fichier E n'a pas été trouvé")
return

try:
DataFichierE = [ligne for ligne in self.ReaderFichierE]
except UnicodeDecodeError:
self.TextCtrl.AppendText(self.NomFichierE+ u" n'est pas lisible")
return
except UnicodeEncodeError:
self.TextCtrl.AppendText(self.NomFichierE+ u" n'est pas lisible (ASCII)")
return

我已经尝试了很多事情,我只会把我所做的最后一件事(我认为它应该有效):

try:
DataFichierE = []
for utf8_row in self.ReaderFichierE:
unicode_row = [x.decode('utf8') for x in utf8_row]
DataFichierE.append(unicode_row)
except UnicodeDecodeError:
self.TextCtrl.AppendText(self.NomFichierE+ u" n'est pas lisible")
return
except UnicodeEncodeError:
self.TextCtrl.AppendText(self.NomFichierE+ u" n'est pas lisible (ASCII)")
return

任何帮助将不胜感激!

最佳答案

您可以尝试使用pandas .

import pandas
myfile = open('myfile.csv')
data = pandas.read_csv(myfile, encoding='utf-8', quotechar='"', delimiter=';')
print(data.values)

unicodecsv

import unicodecsv
myfile = open('myfile.csv')
data = unicodecsv.reader(myfile, encoding='utf-8', delimiter=';')
for row in data:
print row

您可以使用 pip 安装它们:

pip 安装 pandas

pip 安装 unicodecsv

根据您的需要,您也可以尝试简单的字符串操作:

data = [line.strip().split(';') for i, line in enumerate(open('./foo.csv').readlines()) if i != 0]

更新您还可以尝试用 ASCII 等效字符替换 unicode 字符:

from StringIO import StringIO
import codecs
import unicodedata

...

try:
self.FichierE = StringIO(
unicodedata.normalize(
'NFKD', codecs.open(self.CheminFichierE, "r", "utf-8").read()
).encode('ascii', 'ignore'))
self.ReaderFichierE = csv.reader(self.FichierE, delimiter=';')

except IOError:
self.TextCtrl.AppendText(u"Fichier E n'a pas été trouvé")
return

try:
DataFichierE = [ligne for ligne in self.ReaderFichierE]
except UnicodeDecodeError:
self.TextCtrl.AppendText(self.NomFichierE+ u" n'est pas lisible")
return
except UnicodeEncodeError:
self.TextCtrl.AppendText(self.NomFichierE+ u" n'est pas lisible (ASCII)")
return

关于python - 使用 Python 打开 utf-8 格式的 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18590545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com