在python 3中从csv文件创建一个字典

时间:2013-11-06 20:04:32

标签: python csv dictionary

我正在使用Python 3.2和Mac OS Maverick,我正在尝试使用以下格式获取.cvs文件:

'Lisa plowed ', '1A', 'field', 'field', 'field', 'field', 'field'
'John greased ', '1A', 'axle', 'wheel', 'wheels', 'wheel', 'engine'
'Tracy freed ', '1A', 'animals', 'fish', 'slaves', 'slaves', 'slaves'
'Paul alleged ', '1A', 'truth', 'crime', 'facts', 'infidelity', 'incident'

到字典中,每行中的第一项是键,行的其余部分是映射到该键的值。 我尝试了不同的东西,我得到的最接近的是这段代码,但不幸的是,我还没有:

   import csv

   data =open('test.csv', encoding = 'utf=8')
   reader = csv.reader(data, delimiter=",")
   for col in reader:
       print(col)
   result = {}
   for row in reader:
       key = row[0]

       result[key] = row[1:]
   print(result)

我得到的结果只是{},好像字典是空的。 我真的很感激任何有关这方面的帮助,无论是提供新的替代方案还是将我推荐给我能找到答案的地方。 非常感谢!

3 个答案:

答案 0 :(得分:5)

尝试:

import csv

data={}
with open('/tmp/text.txt') as fin:
    reader=csv.reader(fin, skipinitialspace=True, quotechar="'")
    for row in reader:
        data[row[0]]=row[1:]

print(data)       
# {'Lisa plowed ': ['1A', 'field', 'field', 'field', 'field', 'field'], 'Tracy freed ': ['1A', 'animals', 'fish', 'slaves', 'slaves', 'slaves'], 'Paul alleged ': ['1A', 'truth', 'crime', 'facts', 'infidelity', 'incident'], 'John greased ': ['1A', 'axle', 'wheel', 'wheels', 'wheel', 'engine']}

答案 1 :(得分:3)

第一次迭代reader后,它是空的。

答案 2 :(得分:1)

您应该能够从输出中了解发生了什么。首先你这样做:

for col in reader:
    print(col)

由于reader的可迭代,因此会打印出CSV文件中的每一行。您将变量命名为col这一事实并没有任何影响,除非让读者感到困惑。

如果您想特别对待标题行,您应该做的是:

headers = next(reader)
for col in headers:
    print(col)