我有一个url,它定义了中国每个城市的名称和代码。
我可以使用正则表达式获取如下所示的目标字符串:
{'Hot':[{display: "Beijing", data: "Beijing|Beijing(BJS)|1|BJS"},
{display: "Shanghai", data: "Shanghai|Shanghai(SHA)|2|SHA"}...]}
我想使用json.loads(str)
将字符串转换为json对象,但它会引发异常,我猜因为该字符串不是标准的json字符串。
所以我想解析字符串,映射每个城市的名称和代码,如:
Beijing - BJS
Shanghai - SHA
我该怎么做?
------------------ 2016年7月6日------------------
这是我的代码。
def parse_city_code():
url = 'http://webresource.c-ctrip.com/code/cquery/resource/address/flight/flight_new_poi_gb2312.js'
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
data_str = response.read().decode('GBK')
search = re.search('cQuery.jsonpResponse.suggestion=(\{.+\})',data_str)
if(search):
data_str = '"'+search.group(1)+'"'
else:
data_str = ''
json.loads(data_str)
它会引发异常:
Traceback (most recent call last):
File "C:/Users/twlsoft/PycharmProjects/ctrip-flight-ticket/main.py", line 23, in <module>
parse_city_code()
File "C:/Users/twlsoft/PycharmProjects/ctrip-flight-ticket/main.py", line 19, in parse_city_code
json.loads(data_str)
File "D:\Python35-32\lib\json\__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "D:\Python35-32\lib\json\decoder.py", line 342, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 19 (char 18)
因为数据不是有效的json数据吗?
------------------ 2016年7月6日------------------