Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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_Scrapy - Fatal编程技术网

Python-迭代嵌套json并保存值

Python-迭代嵌套json并保存值,python,json,scrapy,Python,Json,Scrapy,我有一个嵌套的JSON(API)webstie,我想解析它并将项目保存到文件中(使用Scrapy框架) 我想访问给定元素的每个子元素,这些子元素的格式如下 0 {…} 1 {…} 2 {…} 3 {…} 4 {…} 5 {…} 6 {…} 7 {…} 8 {…} 9 {…} 10 {…} 如果我展开元素0,我会得到以下值,其中{…}exapnds进一步 id 6738 date "2018-06-14T09:38:51" date_gmt

我有一个嵌套的JSON(API)webstie,我想解析它并将项目保存到文件中(使用Scrapy框架)

我想访问给定元素的每个子元素,这些子元素的格式如下

0   {…}
1   {…}
2   {…}
3   {…}
4   {…}
5   {…}
6   {…}
7   {…}
8   {…}
9   {…}
10  {…}
如果我展开元素0,我会得到以下值,其中{…}exapnds进一步

id  6738
date    "2018-06-14T09:38:51"
date_gmt    "2018-06-14T09:38:51"
guid    
     rendered   "https:example.com"
modified    "2019-03-19T20:43:50"
modified_gmt    "2019-03-19T20:43:50"

我如何连续访问每个元素,首先是0,然后是1,然后是2。。。例如,总计为350,抓取值为

guid   
    rendered "https//:example.com"
并将其保存到项目

我所拥有的:

       results = json.loads(response.body_as_unicode())
       item = DataItem()
       for var in results:
           item['guid'] = results["guid"]
       yield item
这与

TypeError:列表索引必须是整数,而不是str

我知道我可以使用

item['guid']=结果[0][“guid”]

但这只给了我整个列表的[0]索引,我想遍历所有索引。如何将列表中的索引号传递给
var[“guid”]
将for循环中的
结果[“guid”]
替换为
var[“guid”]

当您可以访问
guid
时,就像
results[0][“guid”]
一样,这意味着您有一个字典列表,每个字典都包含名为
guid
的键。在for循环中,您使用
结果
(即列表),而不是抛出
类型错误的
var
(包含每个迭代中的每个字典),因为列表索引必须是整数而不是字符串(如
“guid”

更新:如果要保存每个
var[“guid”]
可以将它们保存在如下字典中:

guid_holder = {"guid": []}
for var in results:
    guid_golder["guid].append(var["guid"])
for guid in guid_holder["guid"]:
    print(guid)

现在
guid\u holder
保存所有元素。

但这只给了我整个列表的[0]索引,用一个uhm的东西替换
0
怎么样?或者长度?发布一个
结果的示例以获得即时帮助。我已经这样做了。它的行为古怪。仅给出第10个索引的一个结果
results[0][“guid']
行为正确,为元素[0]打印
guid
results
使整个json网页保持可变,我也可以使用
print(results)
打印它。我不知道如何迭代每个[0,1,2,3…]并获取每个项目的
guid
。@Alex16237
结果
具体包含哪些内容?请将其作为示例添加到您的问题中。我发布了一张图片(已编辑的帖子)。由于元素太多,因此无法正确设置格式。@Alex16237我更新了我的答案,请参阅“保存所有元素的更新”一节幸运的是,它不起作用。可能我的措辞不正确。如何将数组的变量/长度传递到循环内部的索引?我想这就是我解决此问题的方法,即。
item['guid']=results[*][“guid”]
其中
*
是循环传递的变量。
结果
读取整个页面,如果我使用
print
调用它,我将得到完整的JSON解析页面。
guid_holder = {"guid": []}
for var in results:
    guid_golder["guid].append(var["guid"])
for guid in guid_holder["guid"]:
    print(guid)