【发布时间】:2017-03-02 05:11:13
【问题描述】:
我在 python 中解析 json 字符串时遇到问题,因为字符串值中有额外的双引号,例如 {"name": "Jack O"Sullivan", "id": "1"}
我正在尝试将其转换为列表以进行进一步评估,如下所示:
import ast
js = '{"name": "Jack O"Sullivan", "id": "1"}'
ast.literal_eval(js).values()
如何将 json 字符串更改为类似 "Jack O\'Sullivan" 的内容,以便正确评估。
编辑只是为了强调我知道 json 是无效的,但这就是我所拥有的,并且更改源不是一种选择。我目前正在寻求解决这个限制。
【问题讨论】:
-
这个字符串是从哪里来的?修复源可能更容易。
-
ast.literal_eval()不会比json.loads()更好地解码这个,不。字符串中不带引号的引号在 Python 中同样无效。 -
您是否100% 确定源产生了不带引号的引号(这不是试图在 Python 字符串文字中重现这一点并忘记逃避转义的人工制品)?如果是这样,这在源头上更容易修复,因为现在几乎不可能检测到哪些引号是值,哪些是分隔符。
-
当然是完全无效的 JSON。
-
大家好,是的,我知道 json 无效。但目前在 NOT 选项中更正来源。因此,我希望手动替换字符串中的双引号。这些出现在一个人的名字或姓氏中,所以可能有办法。