嵌套数据到csv python

时间:2016-01-20 10:17:17

标签: python json csv

我有一个嵌套的json数据文件。我想" get.some_object"并用对象写一个csv文件(我认为它们被称为对象:" some_object":" some_value");我想为每组嵌套项目添加一行。这是我的代码:

import csv
import json

path = 'E:/Uni Arbeit/Prof Hayo/Sascha/Bill data/97/bills/hr/hr4242'

outputfile = open('TaxLaw1981.csv', 'w', newline='')                            
outputwriter = csv.writer(outputfile)

with open(path + "/" + "/data.json", "r") as f:
    data = json.load(f)

    for act in data['actions']:
        a = act.get('acted_at')
        b = act.get('text')
        c = act.get('type')

        outputwriter.writerow([a, b, c])
outputfile.close()       

我遇到的问题是它只将最后一组数据写入csv;但是当我跑步时

with open(path + "/" + "/data.json", "r") as f:
data = json.load(f)

for act in data['actions']:

    a = act.get('acted_at')
    b = act.get('text')
    c = act.get('type')
    print (a) 

我的所有" a"价值打印出来。

建议?

2 个答案:

答案 0 :(得分:2)

您需要刷新输出编写器以将该行写入文件,否则它将继续替换变量中的行并最终只写入最后一个值。 Writerow仅在关闭文件时有效,除非您刷新数据。

for act in data['actions']:
        a = act.get('acted_at')
        b = act.get('text')
        c = act.get('type')
        outputwriter.writerow([a, b, c])
        outputfile.flush()

答案 1 :(得分:1)

您上面发布的代码可以100%使用您拥有的文件。

rsync -avz --delete --delete-excluded --exclude **/text-versions/ govtrack.us::govtrackdata/congress/97/bills/hr/hr4242 . 可以使用该文件(感兴趣的人)。

csv文件的输出是(省略中间的一些行)

1981-07-23,Referred to House Committee on Ways and Means.,referral
1981-07-23,"Consideration and Mark-up Session Held by Committee on Ways and Means Prior to Introduction (Jun 10, 81 through Jul 23, 81).",action
1981-07-23,"Hearings Held by House Committee on Ways and Means Prior to Introduction (Feb 24, 25, Mar 3, 4, 5, 24, 25, 26, 27, 30, 31, Apr 1, 2, 3, 7, 81).",action
...
...
...
1981-08-12,Measure Signed in Senate.,action
1981-08-12,Presented to President.,topresident
1981-08-13,Signed by President.,signed
1981-08-13,Became Public Law No: 97-34.,enacted

您应该发布执行时获得的完整错误代码(可能是由于编码错误),以便让某人了解您的代码失败的原因。