Python for loop json.loads错误字符串索引必须为整数
我一直在努力理解以下Json解析问题的原因,我尝试了许多组合来访问“val”项值,但我遇到了麻烦 我已经在“类似”Json样式的数据上成功地使用了下面的代码,但我不知道如何对下面的数据设计这种方法 我感激地接受了所有的建议Python for loop json.loads错误字符串索引必须为整数,python,json,Python,Json,我一直在努力理解以下Json解析问题的原因,我尝试了许多组合来访问“val”项值,但我遇到了麻烦 我已经在“类似”Json样式的数据上成功地使用了下面的代码,但我不知道如何对下面的数据设计这种方法 我感激地接受了所有的建议 result = xmltodict.parse(my_read) result = result['REPORT']['REPORT_BODY'] result =json.dumps(result, indent=1) print(result) {
result = xmltodict.parse(my_read)
result = result['REPORT']['REPORT_BODY']
result =json.dumps(result, indent=1)
print(result)
{
"PAGE": [
{
"D-ROW": [
{
"@num": "1",
"type": "wew",
"val": ".000"
},
{
"@num": "2",
"type": "wew",
"val": ".000"
}
]
},
{
"D-ROW": [
{
"@num": "26",
"type": "wew",
"val": ".000"
},
{
"@num": "27",
"type": "wew",
"val": ".000"
},
{
"@num": "28",
"type": "wew",
"val": ".000"
}
]
}
]
}
for item in json.loads(json_data):
print(item['PAGE']['D-ROW']['val']
错误字符串索引必须是整数项['PAGE']包含列表,因此不能使用'D-ROW'对其进行索引。如果json加载的数据位于变量数据中,则可以使用:
for page in data['PAGE']:
for drow in page['D-ROW']:
print drow['val']
项['PAGE']包含一个列表,因此不能使用“D行”对其进行索引。如果json加载的数据位于变量数据中,则可以使用:
for page in data['PAGE']:
for drow in page['D-ROW']:
print drow['val']
您的JSON不应该在带有数字的值周围包含引号。例如,改变
"D-ROW": [
{
"@num": "1",
"type": "wew",
"val": ".000"
},
到
您的JSON不应该在带有数字的值周围包含引号。例如,改变
"D-ROW": [
{
"@num": "1",
"type": "wew",
"val": ".000"
},
到
D行键包含列表,而不是dict
你应该改变
print(item['PAGE']['D-ROW']['val']
到
在包含您的命令的列表上迭代
D行键包含列表,而不是dict
你应该改变
print(item['PAGE']['D-ROW']['val']
到
要遍历包含dict的列表,首先要注意的是,基于JSON结构,它是一个dict{PAGE:[…],…},因此当您在其上使用JSON.load时,您也会得到一个dict 在这个for循环中,项迭代器实际上引用了dict中的键
for item in json.loads(json_data):
print(item['PAGE']['D-ROW']['val']
这里有一个更简单的例子,更容易理解
>>> for key in json.loads('{"a": "a-value", "b": "b-value"}'):
... print(key)
...
a
b
错误字符串索引必须是整数
因此,您可以猜测循环中的项将引用键页,并且您无法使用['D-ROW']PAGE['D-ROW']为该字符串编制索引,这是没有意义的,因此会出现错误
for循环中的键/值
若使用下面的循环,要获取项,项将成为键、值的元组
也可以像这样展开键和值
>>> for key, value in json.loads('{"a": "a-value", "b": "b-value"}').items():
... print("key is {} value is {}".format(key, value))
...
key is a value is a-value
key is b value is b-value
首先应该注意的是,基于JSON结构,它是一个dict{PAGE:[…],…},因此当您在它上使用JSON.loads时,您也会得到一个dict 在这个for循环中,项迭代器实际上引用了dict中的键
for item in json.loads(json_data):
print(item['PAGE']['D-ROW']['val']
这里有一个更简单的例子,更容易理解
>>> for key in json.loads('{"a": "a-value", "b": "b-value"}'):
... print(key)
...
a
b
错误字符串索引必须是整数
因此,您可以猜测循环中的项将引用键页,并且您无法使用['D-ROW']PAGE['D-ROW']为该字符串编制索引,这是没有意义的,因此会出现错误
for循环中的键/值
若使用下面的循环,要获取项,项将成为键、值的元组
也可以像这样展开键和值
>>> for key, value in json.loads('{"a": "a-value", "b": "b-value"}').items():
... print("key is {} value is {}".format(key, value))
...
key is a value is a-value
key is b value is b-value