【发布时间】:2017-11-27 08:50:13
【问题描述】:
想象一下python中的以下内容(使用2.7):
myString = '{ key: "value" }'
"value" 可以是一个简单的字符串、一个列表、一个布尔值或另一个字典,每个都用双引号括起来
如果我尝试将其转换为 python 字典或 json,我会失败,因为原始字符串中的键没有被引用。
例如:
- ast.literal_eval(myString) 导致:IndentationError: unexpected indent 或 ValueError: malformed string(取决于 myString 的复杂性)
- eval(myString) 导致:NameError: name 'AbsolutePath' is not defined
- json.loads(myString) 导致:ValueError: Expecting property name 用双引号括起来 ...
实际上,我正在从页面中抓取的 javascript 中的 var 声明中获取此字符串。 myString 可以存储一个包含 50 到 100 个条目的字典。
我不相信这与在其他地方询问的相同,因为键未引用而值是。
【问题讨论】:
-
import ast import json myString = '{ key: "value" }' print (ast.literal_eval(myString)) print (eval(myString)) print (json.loads(myString))跨度>
-
通过抓取是否意味着您只是将文字 Javascript 代码拉入字符串?我不确定它的效果如何,如果您可以修改 javascript,请使用
JSON.stringify和 demjson 之类的东西进行解码。 -
嗯...我查看了“可能重复”,但认为这是同一问题的另一种变体,但需要不同的解决方案。是的,我所说的“抓取”是指将 Javascript 代码拉入字符串中。我不能轻易修改 javascript,但我想如果必须,我会的。
-
我确实认为您将不得不修改代码并导出 JSON 而不是阅读它。就目前而言,您基本上是在尝试将一行 Javascript 代码直接转换为 Python 代码,这将成为一个问题,它们的设计初衷不是可互操作的。最好使用定义的中间格式(即 JSON)并在 Python 中解析它。但也许有人知道我不知道的事情并且会回答。
标签: javascript json python-2.7