Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python 3中的csv文件创建字典_Python_Csv_Dictionary - Fatal编程技术网

从python 3中的csv文件创建字典

从python 3中的csv文件创建字典,python,csv,dictionary,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', 'sla

我将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)
我得到的结果就好像字典是空的一样。 我真的非常感谢在这方面的任何帮助,无论是提供一个新的替代方案,还是将我推荐到我可以找到答案的地方。
非常感谢

在您第一次迭代
阅读器之后,它是空的。

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

for col in reader:
    print(col)
由于
reader
是一个可编辑的行,因此它会打印出CSV文件中的每一行。您将变量命名为
col
这一事实没有任何影响,只是为了迷惑读者

如果有需要特别处理的标题行,则应执行以下操作:

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


作为旁注,除非希望列值为
“'1A'”
等等,否则您没有正确地解析它。如果您的CSV使用非标准引号字符,具有(可能是可选的)多余的初始空格等,则必须指定适当的。但是您指定的唯一一个是已经使用默认值的值,
分隔符
。请改为尝试
quotechar=“”,skipinitialspace=True
。结果={row[0]:row[1:]表示读卡器中的行}哇!太快了,太棒了!它工作得很好,谢谢你!
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']}