CSV文件在数据中有逗号,python将其解释为额外的列

时间:2017-06-14 15:21:33

标签: python-2.7 csv

我的两个单元格中有一个带逗号的CSV。细胞标有引号。

例如"1","METHOD - Standard","NGSG 01 MIDLAND FAB","GALINDO-REG, MARISOL",

当我尝试使用以下行导入CSV文件时:

csv = np.genfromtxt(filename, delimiter=',',dtype=str)

Python给出了一个错误,说行有不同的列数。

单元格中的数据必须保持不变,我必须删除引号,因为稍后会将数组导入到不同的程序中。

我需要一种方法来保留数据中的逗号,而无需启动新列。我怎样才能做到这一点?

编辑: 此问题被标记为可能重复。另一个问题的答案是:

lines = '''"AAA", "BBB", "Test, Test", "CCC"
           "111", "222, 333", "XXX", "YYY, ZZZ"'''.splitlines()
for l in  csv.reader(lines, quotechar='"', delimiter=',',
                     quoting=csv.QUOTE_ALL, skipinitialspace=True):
    print l

这看起来会起作用,但是 -

1,如何从文件中读取而不是变量?

2,如何从读者对象中创建数组?

1 个答案:

答案 0 :(得分:0)

来自python doc

>>> import csv
>>> with open('eggs.csv', 'rb') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
...     for row in spamreader:
...         print ', '.join(row)
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

因此,如果您想将文件转换为列表列表:

 import csv

 myFileAsArray = []
 with open('eggs.csv', 'rb') as csvfile:
   spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
   for row in spamreader:
     myFileAsArray.append(row)