[英]Open csv file in utf-8 with Python
我在這里迷失了方向。 我已經閱讀和嘗試了很多東西,以至於我完全迷失了。 我通常不使用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
任何幫助都感激不盡 !
您可以嘗試使用熊貓 。
import pandas
myfile = open('myfile.csv')
data = pandas.read_csv(myfile, encoding='utf-8', quotechar='"', delimiter=';')
print(data.values)
import unicodecsv
myfile = open('myfile.csv')
data = unicodecsv.reader(myfile, encoding='utf-8', delimiter=';')
for row in data:
print row
您可能可以使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.