Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
Python从JSON中提取值_Python_Json - Fatal编程技术网

Python从JSON中提取值

Python从JSON中提取值,python,json,Python,Json,我希望从JSON中提取一组值并将它们写入一个文件 JSON的格式如下所示: "interactions": [ { "type": "free", "input": [ [ 1, 4594, 119218, 0, [71, 46], [2295, 1492], [71, 46], [2295, 1492], 16017, 520790446, [71, 46, 71, 46], [71, 46

我希望从JSON中提取一组值并将它们写入一个文件

JSON的格式如下所示:

    "interactions":     [
    {
        "type": "free",
        "input":             [
            [ 1, 4594, 119218, 0, [71, 46], [2295, 1492], [71, 46], [2295, 1492], 16017, 520790446, [71, 46, 71, 46], [71, 46, 71, 46] ],
            [ 1, 4594, 119219, 0, [72, 46], [2323, 1492], [72, 46], [2323, 1492], 26016, 520790456, [72, 46, 72, 46], [72, 46, 72, 46] ],
            [ 1, 4594, 119220, 0, [72, 45], [2323, 1464], [72, 45], [2323, 1464], 26016, 520790466, [72, 45, 72, 45], [72, 45, 72, 45] ],
            [ 1, 4594, 119221, 0, [72, 45], [2323, 1464], [72, 45], [2323, 1464], 26016, 520790476, [72, 45, 72, 45], [72, 45, 72, 45] ],
            [ 1, 4594, 119222, 0, [73, 45], [2350, 1464], [73, 45], [2350, 1464], 26016, 520790486, [73, 45, 73, 45], [73, 45, 73, 45] ],
            [ 1, 4594, 119223, 0, [73, 45], [2350, 1464], [73, 45], [2350, 1464], 26016, 520790496, [73, 45, 73, 45], [73, 45, 73, 45] ],
            [ 1, 4594, 119224, 0, [73, 45], [2350, 1464], [73, 45], [2350, 1464], 46000, 520790506, [73, 45, 73, 45], [73, 45, 73, 45] ]
        ]
我需要提取的是[71,46]列,然后是以520790446开头的列,并将其写入输出文件

下面是我目前掌握的代码:

import json

json_data = open("test_json.json")

data = json.load(json_data)

json_data.close()

# Need some sort of nested loop here to iterate through each line of the block, and each block also.
print data["interactions"][0]["input"][0][4], '\t', data["interactions"][0]["input"][0][9]
其中有几个可变长度的块,我需要提取所有值,直到文件结束。不过,我还是停留在循环结构上


有人能帮忙吗?

您可以这样获得数据:

[x[4] for x in data["interactions"][0]["input"]]

[x[9] for x in data["interactions"][0]["input"]]
或者一次完成,比如

[[x[4], x[9]] for x in data["interactions"][0]["input"]]
回答评论的第一部分:

[[x[4], x[9]] for x in interaction["input"] for interaction in data["interactions"]]
这是一个发电机,可以这样使用:

vals = [x for x in gen_vals(data)]

在上面([0])的[“交互”]之后,我如何迭代块?我相信这就是迭代整个JSON文件的块。此外,是否可以将其输出到.csv文件或类似文件中,并在每行之后换行?e、 g.每行上的“[71,46]520790446”。请参阅更新。最好是单独问一个问题来输出数据,或者最好还是在这里进行搜索……很抱歉,这是一个麻烦,但我现在得到了“NameError:name'interaction'未定义”。我使用Python的时间不长,循环结构对我来说还是陌生的。我没有你的完整数据,所以我无法真正测试,但我会先看看
[数据交互中的交互[“交互”]
输出到控制台的内容,然后用
[交互[“输入”]删除数据交互中的交互[“交互”]]
然后重复问题中的内容。它在哪里坏了?我把fors倒过来了,现在似乎可以用了。我正在使用
[[x[4],x[9]]进行数据交互[“交互”]进行交互[“输入”]]
感谢您的帮助!
vals = [x for x in gen_vals(data)]