如何将原始 javascript 对象转换为字典?

新手上路,请多包涵

当对某些网站进行屏幕抓取时,我从 <script> 标签中提取数据。

我得到的数据不是标准的 JSON 格式。我不能使用 json.loads()

 # from
js_obj = '{x:1, y:2, z:3}'

# to
py_obj = {'x':1, 'y':2, 'z':3}

目前,我使用 regex 将原始数据转换为 JSON 格式。

但是遇到复杂的数据结构就感觉很糟糕。

你有更好的解决方案吗?

原文由 kev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 509
2 个回答

demjson.decode()

 import demjson

# from
js_obj = '{x:1, y:2, z:3}'

# to
py_obj = demjson.decode(js_obj)

jsonnet.evaluate_snippet()

 import json, _jsonnet

# from
js_obj = '{x:1, y:2, z:3}'

# to
py_obj = json.loads(_jsonnet.evaluate_snippet('snippet', js_obj))

ast.literal_eval()

 import ast

# from
js_obj = "{'x':1, 'y':2, 'z':3}"

# to
py_obj = ast.literal_eval(js_obj)

原文由 kev 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 json5

 import json5

js_obj = '{x:1, y:2, z:3}'

py_obj = json5.loads(js_obj)

print(py_obj)

# output
# {'x': 1, 'y': 2, 'z': 3}

原文由 bikram 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题