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

时间:2017-01-23 10:32:06

标签: python string replace quotes

我遇到以下代码试图将字符串解析为字典因为转义字符而出现问题,我将发布一个示例:

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

1 个答案:

答案 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 " '}