您最需要的是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
这假设您的文件以Year,Make,Model,Description,Price 之类的标题开头,以提供密钥。如果没有,您可以将标头作为列表传递给DictReader:
reader = csv.DictReader(open("so.csv",'rU'), ["Year", "Make", "Model", "Description", "Price"], dialect=csv.excel_tab, delimiter=',')
另请注意,随地吐痰的字符由 delimiter=',' 参数给出。