从csv文件中选择列错误

时间:2018-03-15 08:32:42

标签: python csv multiple-columns

我有一个包含20501行和26列的CSV文件。我想选择5列和9列数据。 这就是我所拥有的

import csv 
filename = 'feed_data.csv'
f = open(filename)
readCSV = csv.reader(f, delimiter=',')
names = []
confidence_score = []
for row in readCSV:
    names.append(row[8])
    confidence_score.append(row[4])

这是错误

Traceback (most recent call last):
File "C:/Users/raady/PycharmProjects/feeder_Classification/test.py", line 10, in <module>
for row in readCSV:
File "C:\Users\raady\AppData\Local\Programs\Python\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 0x9d in position 1009: character maps to <undefined>

如何纠正错误? 我不想用大熊猫。

是否有任何方法可以将两个列仅复制到一个变量,而不是单独复制名称和confidence_score?

编辑: 我已经安装了python 3.6和pycharm环境。我已经安装了pycharm环境中的所有软件包。

编辑2: 我通过修改f=open(filename,encoding='utf8')尝试了建议的link,但我仍然遇到错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 934: invalid start byte。 CSV文件已在utf8中编码。

编辑3: 我稍微修改了这样的代码

import csv
filename = 'feed_data.csv'
# filename = 'test.csv'

with open(filename) as csvfile:
   readCSV = csv.reader(csvfile, delimiter=',')
   data2 = []
   for row in readCSV:
       data = []
       data.append(row[14]) # appending names
       data.append(row[5])  # appending confidence
       data2.append(data)

   print(data2)

我正在添加两个文件test.pyfeed_data(直接从kaggle下载)。当我尝试使用test.py它工作正常时,我可以选择所需的列数据但不能使用feed_data.py,它会给出上面提到的错误。

1 个答案:

答案 0 :(得分:0)

从问题编辑中移除答案:

  

稍作修改

with open(filename, encoding='utf8', errors='ignore') as csvfile:
     

问题在于数据库文件,有关的信息   缺少实际编码技术。尝试了可用   借助visual studio代码检查编码格式。有些排   数据已损坏,并被上述命令忽略。