我需要使用Python读取csv文件的内容。但是,当我运行此代码时:
with(open(self.path, 'r')) as csv_file:
csv_reader = csv.reader(csv_file, dialect=csv.excel, delimiter=';')
self.data = [[cell for cell in row] for row in csv_reader]
我收到此错误:
File "C:\Python36\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 1137: character maps to <undefined>
我的理解是这个文件没有用cp-1252编码,我需要找出使用的编码。我尝试了很多东西,但现在没有任何作用。
关于文件:
我已尝试过的内容:
在我的代码的第一行添加编码:(我或多或少地随机尝试了一些我知道的编码)
with(open(self.path,&#39; r&#39;,encoding =&#39; utf8&#39;))as csv_file:
将文件内容复制粘贴到新文件中,或删除文件的全部内容。仍然无法正常工作。这个真的很烦我,因为我觉得这意味着问题不在文件的内容中,而不在文件本身中。
答案 0 :(得分:0)
我建议使用pandas库(以及numpy),它在数据操作方面非常方便。此函数从xlsx或csv文件类型导入数据。
/!\根据您的需要更改datapath
/!\
import os
import pandas as pd
def GetData(directory, dataUse, format):
dataPath = os.getcwd() + "\\Data\\" + directory + "\\" + dataUse + "Set." + format
if format == "xlsx":
dataSet = pd.read_excel(dataPath, sheetname = 'Sheet1')
elif format == "csv":
dataSet = pd.read_csv(dataPath)
return dataSet
答案 1 :(得分:0)
我终于找到了某种解决方案:
这不太令我满意,但它确实有效。 我仍然不明白问题究竟是什么,为什么这解决了,所以我对任何其他信息感兴趣!