类型错误:列表索引必须是整数或切片,而不是 stR语言 get from json



我试图从这个json中得到所有的长足和长情。

法典:

import urllib.parse
import requests
raw_json = 'http://live.ksmobile.net/live/getreplayvideos?userid='
print()
userid = 735890904669618176
#userid = input('UserID: ')
url = raw_json + urllib.parse.urlencode({'userid=': userid}) + '&page_size=1000'
print(url)
json_data = requests.get(url).json()
print()

for coordinates in json_data['data']['video_info']:
print(coordinates['lat'], coordinates['lnt'])
print()

错误:

/usr/bin/python3.6 /media/anon/3D0B8DD536C9574F/PythonProjects/getLocation/getCoordinates
http://live.ksmobile.net/live/getreplayvideos?userid=userid%3D=735890904669618176&page_size=1000
Traceback (most recent call last):
File "/media/anon/3D0B8DD536C9574F/PythonProjects/getLocation/getCoordinates", line 17, in <module>
for coordinates in json_data['data']['video_info']:
TypeError: list indices must be integers or slices, not str
Process finished with exit code 1

我哪里出错了?

提前感谢您的帮助和时间。

我只是发布一些json来展示它的样子。 json 如下所示:

{
"status": "200",
"msg": "",
"data": {
"time": "1499275646",
"video_info": [
{
"vid": "14992026438883533757",
"watchnumber": "38",
"topicid": "0",
"topic": "",
"vtime": "1499202678",
"title": "happy 4th of july",
"userid": "735890904669618176",
"online": "0",           
"addr": "",
"isaddr": "2",
"lnt": "-80.1282576",
"lat": "26.2810628",
"area": "A_US",
"countryCode": "US",
"chatSystem": "1",
},

完整 json:https://pastebin.com/qJywTqa1

您的网址构造不正确。您构建的 URL(如脚本输出中所示)为:

http://live.ksmobile.net/live/getreplayvideos?userid=userid%3D=735890904669618176&page_size=1000

你真正想要这个的地方:

http://live.ksmobile.net/live/getreplayvideos?userid=735890904669618176&page_size=1000

所以你实际上在你的响应中得到了这个 JSON:

{
"status": "200",
"msg": "",
"data": []
}

这就是您看到该错误的原因。

以下是更正后的脚本:

import urllib.parse
import requests
raw_json = 'http://live.ksmobile.net/live/getreplayvideos?'
print()
userid = 735890904669618176
#userid = input('UserID: ')
url = raw_json + urllib.parse.urlencode({'userid': userid}) + '&page_size=1000'
print(url)
json_data = requests.get(url).json()
print()

for coordinates in json_data['data']['video_info']:
print(coordinates['lat'], coordinates['lnt'])
print()

根据您发布的 json,您在此语句中有问题-

print(coordinates['lat'], coordinates['lnt'])

这里coordinates是一个只有一个项目的列表,即字典。所以你的陈述应该是——

print(coordinates[0]['lat'], coordinates[0]['lnt'])

相关内容

最新更新