2

インターネットの助けを借りて、csv ファイルから特定の列を抽出し、入力キーで指定された辞書に読み込む汎用関数を作成します。

import csv
def dict_filter(it, keys):
    for d in it:
        yield dict((k, d[k]) for k in keys)

次に、後でこのメソッドを呼び出して、 and を使用してこれらの列を別の CSV ファイルに書き込みDictReaderますDictWriter

fieldnames = ["_STATE", "HEIGHT", "WEIGHT", "_BMI", "AGE", "CTYCODE", "IYEAR"]
source = open("data88.csv", 'r')
reader = csv.DictReader(source) 
result = open("aggregate_data.csv", 'w') 
writer = csv.DictWriter(result, fieldnames, extrasaction='ignore') 
for d in dict_filter(reader, fieldnames):
    if d['_STATE'] == "17" : 
         writer.writerow(str(d))

ターミナルで表示されるエラーは次のとおりです。

AttributeError: 'str' object has no attribute 'get' 

TextWrangler では:

Traceback (most recent call last): writer.writerow(str(d))

私はインターネット全体を見てきましたが、何の救済も見つかりません。writerowDictWriter のインスタンスで動作しないのはなぜですか?

4

1 に答える 1

1

行を変更する

writer.writerow(str(d))

writer.writerow(d)
于 2012-08-10T05:36:10.630 に答える