我有4列的csv文件,想创建一个python数组列表,每个csv行都是一个数组。
我能够将每一行作为数组,但问题是数组以引号开头和结尾。
cvs数据格式:
User Link,Reputation,DisplayName,Location
353410,"47245","John Doe","Uruguay"
927034,"46782","Jane Doe","Bahia Blanca, Argentina"
这是我尝试过的代码之一:
with open('Query_SO_Arg.csv', 'rb') as csvfile:
so = csv.reader(csvfile, delimiter=',', quotechar='"')
so_data = []
so.next()
for row in so:
so_data.append(row)
print so_data
这是我得到的输出:
[['353410,"47245","John Doe","Uruguay";'], ['927034,"46782","Jane Doe","Bahia Blanca, Argentina";'], ['62024,"41775","Jim Doe","Buenos Aires, Argentina";'],
如何构建此结构但没有外部'',以便我可以使用数据?
谢谢!
编辑:
这是一个全新的csv文件的数据(与原始文件具有相同的结构):
User Link,Reputation,DisplayName,Location
60000,"40000","Diego K","Buenos Aires, Argentina"
240000,"37000","Claudio R","Buenos Aires, Argentina"
这是我得到的输出(具有相同的旧报价问题):
[['60000,"40000","Diego K", "Buenos Aires, Argentina"'], ['240000,"37000","Claudio R","Buenos Aires, Argentina"']]
编辑2 如果我使用以下代码:
so = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in so:
print ', '.join(row)
我明白了:
User Link, Reputation, DisplayName, Location
60000,"40000","Diego K","Buenos Aires, Argentina"
240000,"37000","Claudio R","Buenos Aires, Argentina"
除了没有列表之外,数据似乎没问题。这是否提供了为什么我无法正确构建列表的任何线索?
编辑3: 根据@MartijinPieters的请求,我发布了以下代码:
print repr(open('So_fake_data_test.csv', 'rb').read())
输出:
'User Link,Reputation,DisplayName,Location\r\n"60000,""40000"",""Diego K"",""Buenos Aires, Argentina"""\r\n"240000,""37000"",""Claudio R"",""Buenos Aires, Argentina"""\r\n'
感谢@MartijinPieters
编辑4
我希望这会有所帮助。 再次感谢。
答案 0 :(得分:1)
最后我找到了解决方案。
这个神秘的问题与代码或数据本身无关,而与Excel保存原始下载数据的方式无关。
这就是我正在做的事情:下载带有原始数据的csv文件,在Excel中打开它并将其保存为可识别的名称。
这是我发现的解决方案:下载csv文件,转到Windows资源管理器并重命名该文件。
通过这个基本操作和以下代码,一切正常:
so = csv.reader(csvfile, delimiter=',', quotechar='"')
so = list(so)
感谢您的所有投入,特别是@MartijnPieters!
答案 1 :(得分:0)
这对我有用(Python 3.4
):
import csv
with open('Query_SO_Arg.csv', 'r') as csvfile:
so = csv.reader(csvfile, delimiter=',', quotechar='"')
so_data = []
for row in so:
so_data.append(row)
print(so_data[1:])
输出结果为:
[['353410', '47245', 'John Doe', 'Uruguay '], ['927034', '46782', 'Jane Doe', 'Bahia Blanca, Argentina ']]