kan*_*and 31 python string double replace slash
所以我似乎无法弄清楚这一点......我有一个字符串说,"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'
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么最后一个有效,因为这很好用:
>>> a.replace("\\","%")
'a%nb'
Run Code Online (Sandbox Code Playgroud)
这里有什么我想念的吗?
编辑我明白\是一个转义字符.我在这里要做的是将所有\\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'
Run Code Online (Sandbox Code Playgroud)
我希望字符串a看起来像字符串b.但是替换不是像我想的那样替换斜线.
Joc*_*zel 40
没有必要使用替换.
你有一个编码字符串(使用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'
Run Code Online (Sandbox Code Playgroud)
在Python 3中:
>>> import codecs
>>> codecs.decode('\\n\\x21', 'unicode_escape')
'\n!'
Run Code Online (Sandbox Code Playgroud)
你错过了,那就是逃脱角色.
请看这里:http ://docs.python.org/reference/lexical_analysis.html 2.4.1"Escape Sequence"
最重要的是\n是换行符.并且\\是一个逃脱的逃脱角色:D
>>> a = 'a\\\\nb'
>>> a
'a\\\\nb'
>>> print a
a\\nb
>>> a.replace('\\\\', '\\')
'a\\nb'
>>> print a.replace('\\\\', '\\')
a\nb
Run Code Online (Sandbox Code Playgroud)