如何使用转义引号操作字符串

How to manipulate string with escaped quotes

由于转义字符,我在尝试将字符串解析为字典时遇到以下代码问题,我将 post 举个例子:

string = """ {"key" : "value 'others' = \"one \" "} """
json.loads(string)

json 无法加载,因为它得到以下带有太多双引号的字符串:

 {"key" : "value 'others' = "one " "}

事实上我不需要加载 json ,我可以简单地做一个 eval :

ast.literal_eval(string)

到目前为止一切顺利,问题是我无法用替换删除转义的双引号字符串(例如:s.replace('\"','')),所以,有一些低级别字符串操作来实现我想要的?我想要一个有效的 json 语法:

{"key" : "value 'others' = one "} 

或者能够得到 python 不删除反斜杠:

{"key" : "value 'others' = \"one\" "} 

正如弗朗索瓦所说,这可以通过原始字符串实现:

rawstring = r"my string \""

我的问题与已经放入非原始字符串变量中的字符串有关,因此我需要一些方法来将该非原始字符串重新转换为原始字符串,以便使用 [= 解析为字典数据结构33=] 或 ast.literal_eval

引号转义在这里不起作用:

>>> """ {"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 " '}