Python读取json响应并追加
我已经开发了一个带有请求模块的post请求,我检索了一个JSON,这是代码Python读取json响应并追加,python,json,request,Python,Json,Request,我已经开发了一个带有请求模块的post请求,我检索了一个JSON,这是代码 headers_ = {'Authorization': acc_token} params_ = (('start_time', '2016-08-01T00:00:00+00:00'),('limit', '2')) r = requests.get('https://server.com/API/v1', headers=headers_, params=params_) data_ =
headers_ = {'Authorization': acc_token}
params_ = (('start_time', '2016-08-01T00:00:00+00:00'),('limit', '2'))
r = requests.get('https://server.com/API/v1', headers=headers_, params=params_)
data_ = r.json()
json_result = (json.dumps(data_, indent=4, sort_keys=False))
这就是json结果
{
"loc":[
{
"origin":{
"lat":39.72417,
"lng":-104.99984,
"eta_seconds":null,
"address":""
},
"destination":{
"lat":39.77446,
"lng":-104.9379,
"eta_seconds":null,
"address":null
}
},
{
"origin":{
"lat":39.77481,
"lng":-104.93618,
"eta_seconds":null,
"address":"10 Albion Street"
},
"destination":{
"lat":39.6984,
"lng":-104.9652,
"eta_seconds":null,
"address":null
}
}
]
}
现在我尝试将每个json项数组的lat和lng值追加到数组中,并尝试使用此代码
for i in json_result:
print(i['loc']['origin']['lat'])
dict.append(i['loc']['origin']['lat'])
但我有这个错误
TypeError:字符串索引必须是整数,而不是str
如何检索数组中每个元素的值lat和lng并将其追加到dict中
谢谢
json\u结果
是一个字符串,因为它是json.dumps()
的结果
你根本不需要这个。拆下整条线路,直接在数据上操作
(作为一个样式点,请停止添加那些不必要的尾随下划线。)
json\u result
是一个字符串,因为它是json.dumps()的结果
你根本不需要这个。拆下整条线路,直接在数据上操作
(作为一个样式点,请停止添加那些不必要的尾随下划线。)因此问题是,json中的i的结果将返回您的json
中的每个键。您可以简单地执行以下操作:
for entry in json_result.get('loc'):
do stuff here....
因此,问题在于json_result
中i的,它将返回json
中的每个键。您可以简单地执行以下操作:
for entry in json_result.get('loc'):
do stuff here....
只是另一种解决方案,如果仍然出现错误,则也可以尝试使用regex仅获取lat,lng部分:
import re
convert=str(json_result)
pattern=r"(l([ng]|[at]).'):\s[-]?\d{0,15}.\d{0,15}"
match=re.finditer(pattern,convert)
print([i.group() for i in match])
只是另一种解决方案,如果仍然出现错误,则也可以尝试使用regex仅获取lat,lng部分:
import re
convert=str(json_result)
pattern=r"(l([ng]|[at]).'):\s[-]?\d{0,15}.\d{0,15}"
match=re.finditer(pattern,convert)
print([i.group() for i in match])
我尝试过,但错误是相同的:类型错误:字符串索引必须是整数我尝试过,但错误是相同的:类型错误:字符串索引必须是整数不应该是I['loc'][1]['origin']['lat']
。由于loc
包含一个字典列表。当我将JSON结果放入一个变量并打印(数据[“loc”][1][“origin”][“lat”])
时,我收到了相同的错误。我得到了所需的输出。它不应该是I['loc'][1]['origin]['lat']
。由于loc
包含一个字典列表。当我将JSON结果放入变量并打印(数据[“loc”][1][“origin”][“lat”])
时,我收到了相同的错误。