如何使用转义引号操作字符串
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 " '}
由于转义字符,我在尝试将字符串解析为字典时遇到以下代码问题,我将 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 " '}