Python - 使用string.replace转义双引号
我该如何在Python字符串中把"替换成\"呢?
我有一个包含双引号的字符串:
s = 'a string with "double" quotes'
我想用一个反斜杠来转义这些双引号。
但是这样做并不完全有效,它用两个反斜杠进行了转义:
s.replace('"', '\\"')
'a string with \\"double\\" quotes'
打印这个字符串的输出显示了我想要的结果。不过,我不仅仅想打印出正确的字符串,我还想把它保存在一个变量里。有没有人能帮我找到正确的正则表达式?
相关问题:
5 个回答
4
这个对我来说很好用。
s.replace('"', '\\"')
9
这个字符串是正确的。但是,repr 会使用反斜杠转义来显示那些无法打印的字符。为了保持一致性(它的目的是形成一个 Python 字符串字面量,当你对这个字面量进行求值时,应该能得到和输入给 repr 的字符串一样的结果),它还会对字符串中出现的每个反斜杠进行转义。
需要注意的是,这种转义算法比较有限。根据你的需求,你可能需要大幅扩展它(或者可以找到现成的解决方案,比如在处理数据库时使用的预处理语句)。
18
你最开始的尝试是完全没问题的。你看到的双反斜杠其实只是用来显示字符串里面的单反斜杠。想了解更多可以看看这个链接:__repr__()
>>> s = 'a string with "double" quotes'
>>> ss = s.replace('"', '\\"')
>>> len(s)
29
>>> len(ss)
31