【问题标题】:replace double quotes with '\"' in python在python中用'\“'替换双引号
【发布时间】:2017-02-01 01:42:47
【问题描述】:

我有一个字符串 -

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\"}

【问题讨论】:

  • 通常替换字符串的第一个参数是您要更改的值,第二个参数是您要更改的值。在这种情况下,您想更改 l.replace('"', '\"') 以获得所需的结果
  • 它还返回 '{"a": "1", "b": "2"}'
  • 哦,我忘记了 Python 将 \ 视为下一个字符一个物理字符,这意味着它需要一个双反斜杠才能得到结果,抱歉 @McGrady 是正确的 :)
  • 您的第二个replace 调用正在运行,您只看到了结果的repr(反斜杠加倍)。

标签: python


【解决方案1】:

试试这个:

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

'\"' 对 Python 来说没有什么特别的意义,所以你不需要在" 之前添加\,如果你运行

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

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

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

您可以从String and Bytes literals查看更多信息。

【讨论】:

  • print(l.replace('"','\\"')),如果您使用的不是 Python 的旧/旧版本。
【解决方案2】:

你也可以试试这个

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多