インターネットの助けを借りて、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))
私はインターネット全体を見てきましたが、何の救済も見つかりません。writerow
DictWriter のインスタンスで動作しないのはなぜですか?