2
使用Internet上的一些幫助,我構建了一個通用函數,它從csv文件中提取特定列並將其讀取到輸入鍵指定的字典中。爲什麼DictWriter不能在我的代碼中工作?
import csv
def dict_filter(it, keys):
for d in it:
yield dict((k, d[k]) for k in keys)
然後我後來把這種方法用DictReader
和DictWriter
寫這些列到另一個CSV文件:
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實例?
這是整個錯誤?這是令人驚訝的。之後沒有一條線? – 2012-08-10 05:27:23
是的,我在TextWrangler中運行它,並且之後沒有任何行。 – SVenkatesh 2012-08-10 05:31:09
編輯解釋了很多。嘗試將該行更改爲'writer.writerow(d)'。 – 2012-08-10 05:34:05