在Python中,用'\"'替换双引号

18
我有一个字符串 -
l = '{"a": "1", "b": "2"}'

我想把这个字符串转换为 -

'{\"a\": \"1\", \"b\": \"2\"}'

我正在尝试将双引号替换为 \"

这是我尝试过的方法 -

l.replace('\"', '\"')
'{"a": "1", "b": "2"}' 

l.replace('\"', '\\"')
'{\\"a\\": \\"1\\", \\"b\\": \\"2\\"}'

如何将{\"a\": \"1\", \"b\": \"2\"}转换?


通常replace字符串的第一个参数是您想要更改的值,第二个参数是您想要将其更改为的内容。在这种情况下,您需要更改l.replace('"', '\"')以获得所需的结果。 - TravisF
它还返回 '{"a": "1", "b": "2"}'。 - user2851669
可能是 https://dev59.com/QmMk5IYBdhLWcg3w3xvq 的重复问题。 - Avinash
哦,我忘了Python将\视为下一个字符的物理字符,这意味着它需要双反斜杠才能得到结果,对此感到抱歉@McGrady是正确的 :) - TravisF
你必须使用反斜杠转义斜杠,即 '\\' + '"' 或者简单地使用 '\\"' - greedy52
1
你的第二个replace调用是有效的,只是你看到了结果的repr(它会将反斜杠加倍显示)。 - Blckknght
2个回答

36

试试这个:

print l.replace('"','\\"')

'\"' 在Python中并没有特殊含义,因此在"之前不需要添加\。如果你运行

print l.replace('\"', '\\"'),你也会得到一个单个反斜杠。

实际上,你看到的是字符串的表示形式,它是由repr()方法添加的。Python将字符串中的反斜杠表示为\\,因为反斜杠是一个转义字符

如果你打印它,你会得到单个反斜杠。

你可以从字符串和字节文字中获取更多信息。


2
如果您使用的不是旧版/遗留版本的Python,则可以使用print(l.replace('"','\\"')) - semicolon

4
你也可以尝试这个。
print l.replace('"',r'\"')

或者

print l.replace('"','\\"')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接