Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据嵌套到csv python_Python_Json_Csv - Fatal编程技术网

将数据嵌套到csv python

将数据嵌套到csv python,python,json,csv,Python,Json,Csv,我有一个嵌套json数据文件。我正在尝试“获取.some_对象”,并用这些对象编写一个csv文件(我认为它们被称为对象:“some_对象”:“some_值”);我希望每组嵌套项对应一行。这是我的代码: import csv import json path = 'E:/Uni Arbeit/Prof Hayo/Sascha/Bill data/97/bills/hr/hr4242' outputfile = open('TaxLaw1981.csv', 'w', newline='')

我有一个嵌套json数据文件。我正在尝试“获取.some_对象”,并用这些对象编写一个csv文件(我认为它们被称为对象:“some_对象”:“some_值”);我希望每组嵌套项对应一行。这是我的代码:

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”值都打印出来


建议?

您需要刷新您的outputwriter以将行写入文件,否则它将继续替换变量中的行,并最终只写入最后一个值。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()

您上面发布的代码与您拥有的文件100%兼容

该文件(适用于任何感兴趣的人)可通过
rsync-avz--delete--delete excluded--exclude**/text versions/govtrack.us::govtrackdata/congress/97/bills/hr/hr4242获得。

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

1981-07-23,提交给众议院方法委员会,转介
1981年7月23日,“引入前方式方法委员会(81年6月10日至81年7月23日)举行的审议和标记会议”,行动
1981-07-23,“内务委员会就引入前的方式方法举行的听证会(2月24日、25日、3月3日、4日、5日、24日、25日、26日、27日、30日、31日、4月1日、2日、3日、7日、81日)。”,行动
...
...
...
1981年8月12日,参议院签署法案,行动
1981年8月12日,提交给总统
1981年8月13日,总统签署
1981年8月13日,成为第97-34号公法,颁布

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

我尝试了您的建议,但出现了以下错误:回溯(最近一次调用):文件“E:\Uni Arbeit\Prof Hayo\Sascha\code for parsinate data.py”,第31行,在outputwriter.flush()AttributeError:“\u csv.writer”对象没有属性“flush”,很抱歉,您需要执行outputfile.flush(),编辑答案。是的,这似乎是json读取失败,不确定。你确定路径上存在该文件,还是将权限从“r”更改为“w”?我将其从“r”更改为“wb”,并得到错误回溯(最近一次调用):文件“E:\Uni Arbeit\Prof Hayo\Sascha\code for parsing senate data.py”,第10行,在data=json.load(f)文件“C:\Python34\lib\json_init.py”,第265行,在加载返回加载(fp.read(),io.unsupportdoOperation:readwhen I use“r”我遇到了一个很长的错误,我之前发布的错误已经被删除了。出于某种原因,我的代码中的某些内容正在擦除整个文件,因此当我运行代码两次时,没有代码可以运行它。我现在只使用了我的原始代码,它就工作了。这对我来说太奇怪了,无法理解将
r
替换为
w
在你的评论中加入ed可能会有所帮助