python - 使用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]
谢谢您的帮助!
解决方案
您的 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]
推荐阅读
- laravel - 电子邮件验证后重定向到预期的 URL laravel 8 fortify jetstream 注册
- excel - 使用vba根据多张纸上的两列对表格进行排序
- python - 如何根据python中其他2个数据集的条件创建第三个数据集
- charts - Helm 3 - Ingress.yaml & Value.yaml - 规则不匹配
- c - 指针无法读取数组中的正确元素
- r - 在R中按组转换枢轴更长
- python - 在网格 Python 中查找模式
- sql-server - 如何获取条件中提到的所有值的数据
- android - Android Studio 4.1 堆栈溢出错误
- apache-kafka - Kafka 工具:连接集群时出错,无法创建新的 kafkaAdminClient