首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将原始javascript对象转换为python字典?

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

Stack Overflow用户
提问于 2014-06-04 09:27:26
回答 5查看 22.4K关注 0票数 23

在浏览一些网站时,我会从<script>标签中提取数据。

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

代码语言:javascript
复制
# from
js_obj = '{x:1, y:2, z:3}'

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

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

但当我遇到复杂的数据结构时,我会感觉很糟糕。

你有更好的解决方案吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-11-13 10:08:10

demjson.decode()

代码语言:javascript
复制
import demjson

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

# to
py_obj = demjson.decode(js_obj)

jsonnet.evaluate_snippet()

代码语言:javascript
复制
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()

代码语言:javascript
复制
import ast

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

# to
py_obj = ast.literal_eval(js_obj)
票数 52
EN

Stack Overflow用户

发布于 2020-12-24 23:05:45

今天下午我也面临着同样的问题,我终于找到了一个很好的解决方案。这就是JSON5

JSON5的语法更类似于原生JavaScript,因此它可以帮助您解析非标准的JSON对象。

你可能想看看pyjson5

票数 5
EN

Stack Overflow用户

发布于 2014-06-04 09:58:51

这可能并不适用于所有地方,但作为开始,这里有一个简单的正则表达式,它应该将键转换为带引号的字符串,以便可以传递给json.loads。或者这就是你已经在做的事情?

代码语言:javascript
复制
In[70] : quote_keys_regex = r'([\{\s,])(\w+)(:)'

In[71] : re.sub(quote_keys_regex, r'\1"\2"\3', js_obj)
Out[71]: '{"x":1, "y":2, "z":3}'

In[72] : js_obj_2 = '{x:1, y:2, z:{k:3,j:2}}'

Int[73]: re.sub(quote_keys_regex, r'\1"\2"\3', js_obj_2)
Out[73]: '{"x":1, "y":2, "z":{"k":3,"j":2}}'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24027589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档