2013-06-23 103 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

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