我有一个JSON文件:
[
{
"schema":{"id":1},
"rawdata":{},
"enriched":{"name":"xy1"}
},
{
"schema":{"id":2},
"rawdata":{},
"enriched":{"name":"xy2"}
},
{ "schma":{"id":3}, "radata":{},"enrichd":{"name":"xy3"}
},
{ "schema":{"id":3}, "radata":{},"enriched":{"name":"xy3"}
},
{"name":"xy200"},
{
"schema":{"id":4},
"rawdata":{},"enriched":{"name":"xy4"}
}
]
其中我必须过滤来自"0"的嵌套条目的数目;name":"xy1";。简而言之:我需要";xy";。
我已经写的代码是:
for value in data:
if value["enriched"]:
get_char = value["enriched"]["name"]
num = get_char[2:]
print(f"{num}")
elif value["enrichd"]:
get_char = value["enrichd"]["name"]
num = get_char[2:]
print(f"{num}")
elif value["name"]:
get_char = value["name"]
num = get_char[2:]
print(f"{num}")
else:
print("test")
我的错误信息是:
1
2
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-155-13d4f2ca308f> in <module>
52 for value in data:
53 try:
---> 54 if value["enriched"]:
55 get_char = value["enriched"]["name"]
56 num = get_char[2:]
KeyError: 'enriched'
但我不明白为什么循环不使用我写的elif。也许有人可以帮我:(
我认为这可能是拼写错误的结果,而不是你的代码有什么问题:你在一个dict中把"riched"错写成了"enrichd",因此python会引发一个KeyError
,因为你的dict中没有"enriched"。纠正错误应该是一个简单的修复。
关于解析的主题,比如字符串xy2
中的数字2,最简单的方法是使用.strip(“xy”)
(尽管只有当整数之前的字符总是相同时,这才有效。(
编辑:使用条形图功能。剥离字符串只需从字符串的末尾和开头删除指定的子字符串。所以,如果我有字符串”Hello world”
,我会去”Hello world”.strip(“Hello”)
,它会从一开始就"去掉"单词Hello。如果我执行“area”.strip(“a”)
,它将返回"re",因为a已从每一端删除。