python - 无法将 dicts 字符串加载到 JSON 中
问题描述
import requests
import re
import json
def parser(code):
params = {
'template': 'professional',
'level': 'search',
'search': code
}
r = requests.get("https://maps.locations.husqvarna.com/api/getAsyncLocations",
params=params).json()
goal = re.search(r'({.+})', r['maplist'], re.M | re.DOTALL).group(1)
print(goal)
parser("35801")
代码将返回一个未包装string
的。dicts
我试图倾倒/装载并将其包裹在其中,[
]
但由于奇怪的原因它仍然是string
解决方案
您需要手动将目标转换为列表,以接收 Python 对象:
import requests
import re
import json
def parser(code):
params = {
'template': 'professional',
'level': 'search',
'search': code
}
r = requests.get("https://maps.locations.husqvarna.com/api/getAsyncLocations",
params=params).json()
goal = re.search(r'({.+})', r['maplist'], re.M | re.DOTALL).group(1)
jsonList = '[%s]' % goal # Make proper json list!
items = json.loads(jsonList)
for item in items:
print(item)
parser("35801")
出去:
{'fid': 'USF221344-2115METROCIRCLE', 'lid': '56063', 'lat': '34.7004049', 'lng': '-86.5924508', 'url': 'https://locations.husqvarna.com/al/huntsville/product-manufacturer-usf221344-2115metrocircle.html', 'country': 'US', 'url_slug': 'product-manufacturer-usf221344-2115metrocircle.html', 'location_name': 'HEDDEN LAWN & GARDEN', 'address_1': '2115 METRO CIRCLE', 'address_2': '', 'city': 'HUNTSVILLE', 'city_clean': 'huntsville', 'region': 'AL', 'region_lc': 'al', 'post_code': '35801', 'local_phone': '(256) 885-1750', 'local_phone_pn_dashes': '256-885-1750', 'local_fax': '', 'local_fax_pn_dashes': '', 'from_email': '', 'hours_timezone': '', 'hours_dst': '', 'distance': '2.2', 'hours_sets:primary': '{"label":"Primary Hours","name":"primary","type":"0","timezone":"-6","dst":"1"}', 'Store Type_CS': 'Buy,Service', 'Location Type_CS': 'Authorized Dealers,Servicing Locations'}
...
推荐阅读
- sql-server - 将消息标记为已查看
- docker - 使用 Kubeadm 为 Helm 初始化 Tiller - Kubernetes
- swift - 我需要帮助将 facebook 分享添加到我的 ios 应用程序中
- android - 了解android上服务的内存管理
- c - 使用命令行参数执行位于内存中的程序
- javascript - 引导多个日期选择器
- r - 需要在 ggplot2 中向我的条形图添加百分比,但百分比跳到底部而不是顶部
- javascript - 从对象数组中迭代对象属性
- robotframework - API 测试返回 InvalidURL:非数字端口:机器人框架
- amazon-web-services - 使用 AWS Athena 提取 Tableau 数据