用python解析json数据
我在解析生成的json数据以返回只需要的部分(例如,“名称”、“过道”、“状态”)时遇到问题。如何修改输出以仅打印这些项目 代码: 打印时,我得到以下格式:用python解析json数据,python,arrays,json,python-3.x,Python,Arrays,Json,Python 3.x,我在解析生成的json数据以返回只需要的部分(例如,“名称”、“过道”、“状态”)时遇到问题。如何修改输出以仅打印这些项目 代码: 打印时,我得到以下格式: { "1": { "name": "camera", "aisle": "M.3", "status": "In Stock" }, "2": { "name": "camera", "aisle": "M.53", "status": "Out of Stock" },
{
"1": {
"name": "camera",
"aisle": "M.3",
"status": "In Stock"
},
"2": {
"name": "camera",
"aisle": "M.53",
"status": "Out of Stock"
},
"3":{
"name": "camera",
"aisle": "M.32",
"status": "In Stock"
}
}
我希望每个循环的输出在一行上,例如:
'35': { 'name': 'Camera', 'aisle': 'M.35', 'status': 'Out of stock' },
'36': { 'name': 'Camera', 'aisle': 'J.35', 'status': 'In stock' }
仅供参考,输出文件中的示例数据看起来错误,因为值字符串不是有效的json。应该是这样的:
"{\"results\":[{\"name\":\"Camera\",\"department\":{\"name\":\"Electronics\",\"storeDeptId\":-1},\"location\":{\"aisle\":[\"M.35\"],\"detailed\":[{\"zone\":\"M\",\"aisle\":\"36\",\"section\":\"2\"}]},\"price\":{\"priceInCents\":49900,\"isRealTime\":true,\"currencyUnit\":\"USD\"},\"inventory\":{\"quantity\":3,\"status\":\"Out of stock\",\"isRealTime\":true}}]}"
注意]
在我的JSON版本中,但在你的JSON版本中没有。一旦获得有效的JSON,就可以使用JSON.loads将该JSON字符串转换为一个可以从中提取数据的值:
data = json.loads(data['searchResults'])
print json.dumps(data, indent=2)
这应该让你:
{
"results": [
{
"department": {
"name": "Electronics",
"storeDeptId": -1
},
"inventory": {
"status": "Out of stock",
"isRealTime": true,
"quantity": 3
},
"price": {
"priceInCents": 49900,
"isRealTime": true,
"currencyUnit": "USD"
},
"name": "Camera",
"location": {
"detailed": [
{
"aisle": "36",
"section": "2",
"zone": "M"
}
],
"aisle": [
"M.35"
]
}
}
]
}
现在,类似这样的操作将使您接近所需的修剪输出:
for coro in asyncio.as_completed(tasks, loop=loop):
try:
data, store = await coro
result = json.loads(data['searchResults'])['results'][0] #Storing retrieved json data
summary = {
'name': result['name'],
'aisle': result['location']['aisle'][0],
'status': result['inventory']['status'],
}
results[store] = summary
except (IndexError):
continue
在此之后,输出文件中的输出将如下所示:
'35': { 'name': 'Camera', 'aisle': 'M.35', 'status': 'Out of stock' },
你有没有碰巧读过这些文件?他们解释了如何将JSON数据转换为Python dict,然后,您只需访问适当的dict元素,并按自己喜欢的方式打印它们。在这种情况下,您最好停止使用json,将这些项目连接起来,然后将它们写入文本文件。谢谢-我更新了上面的帖子,但出现了以下错误:NameError:name“data”未定义谢谢-我更新了上面的帖子,但得到了以下错误:名称错误:未定义名称“数据”。不需要更新代码块的最后两行。用输出txt文件的原始代码替换它们。我如何修改“写入文件”,使每个循环的结果都在单独的行上?现在,我为每个数据点获得一条新线。
'35': { 'name': 'Camera', 'aisle': 'M.35', 'status': 'Out of stock' },