【发布时间】:2018-07-28 13:24:51
【问题描述】:
您好,我正在编写一个程序,它会提示输入位置、联系 Web 服务并检索 Web 服务的 JSON 并解析该数据,并从 JSON 中检索第一个 place_id。
我正在尝试查找 place_id:上海交通大学
我已经编写了代码,但我无法让它工作。它必须是一个小错误,因为当我运行它时,我会收到一条消息,上面写着
place_id = process_json['results'][0]['place_id']
TypeError: list indices must be integers or slices, not str
这是我的代码
import urllib.request, urllib.parse, urllib.error
import json
serviceurl = 'http://py4e-data.dr-chuck.net/geojson??'
while True:
location = input('Enter location: ')
if len(location) < 1: break
url = serviceurl + urllib.parse.urlencode(
{'address': location})
print ('Retrieving', url)
data = urllib.request.urlopen(url)
read_data = data.read().decode()
print ('Retrieved',len(read_data),'characters')
try:
process_json = json.loads(read_data)
except:
process_json = None
place_id = process_json['results'][0]['place_id']
print ('Place id:', place_id)
【问题讨论】:
-
我猜
process_json是一个列表,或者process_json['results'][0]是一个列表,你把它当成字典了 -
@chrisz 是的,它是一个列表。那么我该怎么做才能不把它当作字典呢?对不起这个简单的问题......我是python的新手
-
您无法访问这样的列表:
L['string_here'],您必须使用整数索引访问列表,例如:L[0]、L[1]等。