我遇到以下代码试图将字符串解析为字典因为转义字符而出现问题,我将发布一个示例:
string = """ {"key" : "value 'others' = \"one \" "} """
json.loads(string)
json无法加载,因为它获得了以下带有太多双引号的字符串:
{"key" : "value 'others' = "one " "}
实际上我不需要用json加载,我可以简单地做一个eval:
ast.literal_eval(string)
到目前为止这么好,问题是我无法删除带有replace的转义双引号字符串(例如:s.replace('\“','')),所以,有一些低级别的字符串操作来实现我想要什么?我想得到一个有效的json语法:
{"key" : "value 'others' = one "}
或者能够让python不删除反斜杠:
{"key" : "value 'others' = \"one\" "}
正如弗朗索瓦所说,这可以通过原始字符串来实现:
rawstring = r"my string \""
我的问题与已放入非原始字符串变量的字符串有关,所以我需要一些方法来将非原始字符串重新编写为原始字符串,以便使用json或ast解析为字典数据结构。 literal_eval
答案 0 :(得分:1)
逃避的报价在这里不起作用:
>>> """ {"key" : "value 'others' = \"one \" "} """
' {"key" : "value \'others\' = "one " "} '
如您所见,反斜杠已被忽略。您可以使用 raw 前缀考虑它们:
import json
string = r""" {"key" : "value 'others' = \"one \" "} """
print(json.loads(string))
结果:
{'key': 'value \'others\' = "one " '}