首页 > 解决方案 > 使用python打印包含在Json文件中的列表

问题描述

我是 python 新手,我正在处理一些包含多个对象的 geojson 文件,每个对象代表一个区域。我需要打印所有区域的坐标,我该怎么做?我正在尝试这个,但它不起作用:

import json
with open('districts and precinc data merged.json') as f:
    data = json.load(f)
for i in json['features']:
  print(i['geometry']['coordinates'])

这是 json 文件的示例:

    {"type":"FeatureCollection", "features": [
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[552346.2856999999,380222.8998000007]]]]},"properties":{"OBJECTID":1,"STFID":"55001442500001","NAME":"0001"}},
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[529754.7249999996,409135.9135999996],[529740.0305000003,408420.03810000047]]]},"properties":{"OBJECTID":2,"STFID":"55001537250001","NAME":"0001","COUSUBFP":"53725"}},
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[508795.9363000002,441655.3672000002],[508813.49899999984,441181.034]]]},"properties":{"OBJECTID":6278,"STFID":"55141885750001","NAME":"0001","COUSUBFP":"88575"}}
]}

我想要的输出将是每一行都有每个对象的坐标,如下所示:

[552346.2856999999,380222.8998000007]
[529754.7249999996,409135.9135999996],[529740.0305000003,408420.03810000047]
[508795.9363000002,441655.3672000002],[508813.49899999984,441181.034]

谢谢您的帮助!

标签: pythonjsongeojson

解决方案


您的 json 中有错误。在第一行中,您有 3 个列表打开[[[但关闭 4 个]]]]。在您的 json 文件中,替换[[[552346.2856999999,380222.8998000007]]]][[[552346.2856999999,380222.8998000007]]].

然后你可以使用嵌套循环,

x =  {"type":"FeatureCollection", "features": [
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[552346.2856999999,380222.8998000007]]]},"properties":{"OBJECTID":1,"STFID":"55001442500001","NAME":"0001"}},
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[529754.7249999996,409135.9135999996],[529740.0305000003,408420.03810000047]]]},"properties":{"OBJECTID":2,"STFID":"55001537250001","NAME":"0001","COUSUBFP":"53725"}},
{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[508795.9363000002,441655.3672000002],[508813.49899999984,441181.034]]]},"properties":{"OBJECTID":6278,"STFID":"55141885750001","NAME":"0001","COUSUBFP":"88575"}}
]}

for i in x["features"]:
    for j in i["geometry"]["coordinates"][0]:
        print(j, end=",") # replace `\n` with `,`
    print("\b") # removes trailing , 

# output,

[552346.2856999999, 380222.8998000007]
[529754.7249999996, 409135.9135999996],[529740.0305000003, 408420.03810000047]
[508795.9363000002, 441655.3672000002],[508813.49899999984, 441181.034]

推荐阅读