【发布时间】:2011-07-08 09:28:07
【问题描述】:
所以我似乎无法弄清楚...我有一个字符串说,"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。但是替换并没有像我想象的那样替换斜杠。
【问题讨论】:
-
您的原始字符串
a = 'a\\nb'实际上并没有两个'\'字符,第一个是后者的转义符。如果你这样做了,print a,你会发现你实际上只有一个'\'字符。
标签: python string replace double slash