我想在我的JSON文件中的一个部分上循环,并根据文件中的名称渲染几何体。第一个月
import json
data = json.load(open('src/test.json'))
for geo in data["geometry"]:
if geo == "rect":
Geometry.rectangle(draw=pen, x=geo["x"], y=geo["y"], width=geo["width"],
height=geo["height"], rgb=geo["color"]
字符串src/test.json
(略简化)
{
"geometry": {
"rect": {
"x": 10,
"y": 10,
"width": 40,
"heigth": 40,
"color": {
"r": 255,
"g": 100,
"b": 0
}
},
"ellipse": {
"x": 200,
"y": 100,
"width": 400,
"heigth": 400,
"color": {
"r": 0,
"g": 255,
"b": 0
}
},
"polygon": {
"x": 200,
"y": 100,
"radius": 200,
"sites": 8,
"rotation": 90,
"color": {
"r": 0,
"g": 255,
"b": 0
}
},
"text": {
"x": 200,
"y": 100,
"size": 20,
"text": "jklsajflksdjf",
"words_per_line": 20,
"id": "text_1",
"align": "right",
"color": {
"r": 0,
"g": 255,
"b": 0
},
"font_style": "monospace"
}
}
}
型
每次我执行这段代码,生病得到这个错误:
print(geo["rect"])
^^^^^^^^^^
TypeError: string indices must be integers, not 'str'
型
我用索引试过了,比如geo[0]
,但它返回了字符串的第一个字符,"rect" -> "r"
,有没有办法从几何体中获取值?
2条答案
按热度按时间yrdbyhpb1#
一旦json被加载,它就被表示为python中的字典。在python中循环一个字典,你就可以从字典中得到键,到目前为止,你的代码是正确的:
字符串
如果要获取属于此几何的数据,可以询问原始数据
型
或者更好的方法是使用
items()
迭代器,它将键和值直接作为元组提供给您型
utugiqy62#
看看你的数据我稍微调整一下你的脚本。你可以使用
dict.get
来检查形状是否存在,而不是循环和比较字符串:字符串
印刷品:
型