小编典典

Python将\\\替换为\

python

所以我似乎无法弄清楚…我有一句话要说,"a\\nb"我希望它成为"a\nb"。我已经尝试了以下所有方法,但似乎都没有效果;

>>> a
'a\\nb'
>>> a.replace("\\","\")
  File "<stdin>", line 1
    a.replace("\\","\")
                      ^
SyntaxError: EOL while scanning string literal
>>> a.replace("\\",r"\")
  File "<stdin>", line 1
    a.replace("\\",r"\")
                       ^
SyntaxError: EOL while scanning string literal
>>> a.replace("\\",r"\\")
'a\\\\nb'
>>> a.replace("\\","\\")
'a\\nb'

我真的不明白为什么最后一个有效,因为这样可以正常工作:

>>> a.replace("\\","%")
'a%nb'

我在这里想念什么吗?

编辑 我知道\是转义字符。我要在这里执行的操作是将所有内容都\\n \\t转换为其他内容,\n
\t并且替换似乎没有按照我的预期进行。

>>> a = "a\\nb"
>>> b = "a\nb"
>>> print a
a\nb
>>> print b
a
b
>>> a.replace("\\","\\")
'a\\nb'
>>> a.replace("\\\\","\\")
'a\\nb'

我希望字符串a看起来像字符串b。但是替换并不能像我想的那样替换斜线。


阅读 241

收藏
2020-12-20

共1个答案

小编典典

无需为此使用replace。

您所拥有的是一个编码字符串(使用string_escape编码),并且想要对其进行解码:

>>> s = r"Escaped\nNewline"
>>> print s
Escaped\nNewline
>>> s.decode('string_escape')
'Escaped\nNewline'
>>> print s.decode('string_escape')
Escaped
Newline
>>> "a\\nb".decode('string_escape')
'a\nb'

在Python 3中:

>>> import codecs
>>> codecs.decode('\\n\\x21', 'unicode_escape')
'\n!'
2020-12-20