2013-06-23 142 views
1

我想將一個.csv文件導入字典。 我的麻煩是,當我試圖閱讀字典我沒有得到輸出? 爲什麼?將.csv文件導入字典

.csv文件看起來是這樣的:

F59241,GG1212 
F65563,QQ434 
F59226,WW343 
F69215,CC434 

那我曾嘗試是fllowing:

import csv 

with open('myfile.csv', mode='r') as infile: 
    reader = csv.reader(infile,) 
with open('mtfile.csv', mode='w') as outfile: 
    writer = csv.writer(outfile) 
DICT = {rows[0]:rows[1] for rows in reader} 
n = ['F59241', 'F65563', 'F59226', 'F69215'] 

for key in n: 
    if DICT.get(key): 
     print ((key) + ' : ' + DICT[key]) 
    else: 
     print((key) + ' : ' + "Not Available") 

誰能告訴我什麼我做錯了什麼? 謝謝

+0

而不是'如果DICT.get(鍵):'使用'如果在DICT中鍵'除非你真的想檢查'key'的值是不是falsey /不存在 – jamylak

回答

6

帶結構當您退出該塊時關閉文件。你需要用塊第一

import csv 

with open('myfile.csv', mode='r') as infile: 
    reader = csv.reader(infile,) 
    DICT = {rows[0]:rows[1] for rows in reader if len(rows) == 2} 
    print DICT 

n = ['F59241', 'F65563', 'F59226', 'F69215'] 

for key in n: 
    if DICT.get(key): 
     print ((key) + ' : ' + DICT[key]) 
    else: 
     print((key) + ' : ' + "Not Available") 
+0

Tnx。失蹤「是我的問題上的一個錯字。我對你對infile的評價是什麼讓我感興趣。我將如何去做這件事? – gJg

+0

@ user2416144我更新了一個功能正常的代碼段 – SheetJS

+0

tnx for那個nirko – gJg

1

閱讀infile內的數據作爲Nirk指出的那樣,with塊將關閉該文件時,他們退出,爲此,當你嘗試讀取文件(通過迭代reader)它引發錯誤。你需要用循環創建你的字典,或者把文件的內容帶入內存。我的建議如下:

from csv import reader 
with open('myfile.csv',mode='r') as infile: 
    d = dict(reader(infile)) 

>>> d 
{'F59226': 'WW343', 'F65563': 'QQ434', 'F59241': 'GG1212', 'F69215': 'CC434'} 
+0

爲什麼這會降低投票率? – HennyH

+0

不知道。這工作得很好。 –