1

.csv ファイルを dict にインポートしようとしています。私の問題は、from dict を読み取ろうとすると、出力が得られないことですか? どうして??

.csv ファイルは次のようになります。

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

私が試したのは流れです:

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")

誰が私が間違っているのか教えてもらえますか? ありがとう

4

2 に答える 2

6

with コンストラクトは、ブロックを終了するときにファイルを閉じます。infile最初に with ブロック内のデータを読み取る必要があります

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")
于 2013-06-23T12:02:12.737 に答える
1

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'}
于 2013-06-23T13:09:22.313 に答える