Python:如何在json字符串值内转义双引号?
我在python中解析json字符串时遇到问题,因为在字符串值中有多余的双引号,例如 {"name": "Jack O"Sullivan", "id":
"1"}
我正在尝试将其转换为列表,以便进一步评估,如下所示:
import astjs = '{"name": "Jack O"Sullivan", "id": "1"}'
ast.literal_eval(js).values()
我如何将json字符串更改为this "Jack O\'Sullivan"
,以便对其进行正确评估。
只是为了强调我知道json无效,但这是我所拥有的,并且更改源不是一个选择。我目前正在努力解决此限制。
回答:
import rejson = '{"name": "Jack O"Sullivan", "id": "1"}'
fixed = re.sub(r'("[\s\w]*)"([\s\w]*")',r"\1\'\2", json)
我怀疑这会工作(在repl.it上的工作示例),它使用以下正则表达式:
("[\s\w]*)"([\s\w]*")
然后更换任何内"
用\'
。只要包含列表有效(即[\s\w]
),此方法就起作用,即有效字符串仅包含空格和单词字符。您可能需要为更复杂的名称添加其他可能性。
它匹配任何字符串"<alpha/space>"<alpha/space>"
,然后"<whatwasbefore>\'<whatwasafter>"
使用捕获组和反向引用替换它。
请参阅regex101上的示例
正如我在评论中提到的,替代方法是使其排除json控制字符[^{}:,]
。这应该会产生相似的结果,但不会遗漏其中包含其他字符的名称(例如-
,)。
以上是 Python:如何在json字符串值内转义双引号? 的全部内容, 来源链接: utcz.com/qa/434819.html