借助互联网的一些帮助,我构建了一个通用函数,该函数从 csv 文件中提取特定列并将其读取到由输入键指定的字典中。
import csv
def dict_filter(it, keys):
for d in it:
yield dict((k, d[k]) for k in keys)
DictReader
然后我稍后调用此方法以使用and将这些列写入另一个 CSV 文件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 实例上工作?