如何迭代整个JSON-fi

2024-10-02 20:44:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我写这段代码是为了解析JSON,在某种程度上它很好。它只会停止在文件中生成部分输出。我做了len(data),它返回了6,这是它返回的项数。但当我生成数据时,所有7000+行都会打印出来。那么如何更改此代码,使其遍历整个文件?另外,如何从“路径”列表中返回最小和最大坐标?在

import os
import json
import pprint as p

def jSonYield():
    n = 0
    os.chdir('C:\Users\U2970\Documents\ArcGIS')
    with open('new_corrs_shapy_FeaturesToJS.json') as datafile:
        data = json.loads(datafile.read())
    datafile.close()
    for line in data:
        n = n + 1
        corr =  data['features'][n]['attributes']['CORRIDOR_C']
        trf =  data['features'][n]['attributes']['TRFPOST']
        frf =  data['features'][n]['attributes']['FRFPOST']
        coords =  data['features'][n]['geometry']['paths']
        yield corr,frf,trf,coords


gen = jSonYield()
for line in gen:
    p.pprint(line)

以下是JSON数据的示例:

^{pr2}$

Tags: 文件数据代码importjsondataosas
1条回答
网友
1楼 · 发布于 2024-10-02 20:44:25

因此,回顾一下这些评论:

第一个问题:

for line in data:

data是一个有键的字典,而不是“行”。在

另外,如果使用with open() as datafile:,则不需要datafile.close()。这在with缩进之外自动发生。在

为了迭代字典中的所有键和值(这就是data)的含义,您需要执行以下操作

^{pr2}$

不确定什么是{{CD6}},但是如果对你有用的话,那就太好了!在

相关问题 更多 >