你最可能需要的是DictReader
(正如布鲁诺指出的那样,他更快地拉动扳机)。它采用文件名并将每行作为字典返回,这是您想要的。这将使你的代码:
import csv
a = []
reader = csv.DictReader(open("so.csv",'rU'), dialect=csv.excel_tab, delimiter=',')
print reader
for row in reader:
print row
a.append(row)
print a[2]['Make']
任选简化为:
import csv
with open("so.csv",'rU') as f:
a = list(csv.DictReader(f, dialect=csv.excel_tab, delimiter=','))
print a[2]['Make']
使用一些样本数据(从Wikipedia):
Year,Make,Model,Description,Price
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
打印:
<csv.DictReader instance at 0x7fe7a3aedfc8>
{'Price': '3000.00', 'Description': 'ac, abs, moon', 'Make': 'Ford', 'Model': 'E350', 'Year': '1997'}
{'Price': '4900.00', 'Description': '', 'Make': 'Chevy', 'Model': 'Venture "Extended Edition"', 'Year': '1999'}
{'Price': '5000.00', 'Description': '', 'Make': 'Chevy', 'Model': 'Venture "Extended Edition, Very Large"', 'Year': '1999'}
{'Price': '4799.00', 'Description': 'MUST SELL!\nair, moon roof, loaded', 'Make': 'Jeep', 'Model': 'Grand Cherokee', 'Year': '1996'}
Chevy
这个假设如果您的文件以这样的标题开头,则提供密钥。如果没有,你可以通过标题的列表中DictReader
:
reader = csv.DictReader(open("so.csv",'rU'), ["Year", "Make", "Model", "Description", "Price"], dialect=csv.excel_tab, delimiter=',')
还要注意的是随地吐痰字符由delimiter=','
参数给出。
是什么'打印一个[45] ['firstname']'应该在做什么,你的数据是什么样的?行也是一个列表,所以它是有道理的,你不能分裂它 – 2014-12-05 15:13:05
你似乎不想使用数组,而是列表。 – user2097159 2014-12-05 15:14:23
你可能只想做'a.append(row)' – user2097159 2014-12-05 15:16:38