簡體   English   中英

在python 3中從csv文件創建一個字典

[英]Create a dictionary from a csv file in python 3

我正在使用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)

我得到的結果只是{},好像字典是空的。 我真的很感激任何有關這方面的幫助,無論是提供新的替代方案還是將我推薦給我能找到答案的地方。 非常感謝!

嘗試:

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']}

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

您應該能夠從輸出中判斷出發生了什么。 首先你這樣做:

for col in reader:
    print(col)

由於reader是可迭代的 ,因此會打印出CSV文件中的每一行。 除了混淆讀者之外,命名變量col事實沒有任何影響。

如果你想特別對待一個標題行,你應該做的是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM