所以我似乎无法弄清楚…我有一句话要说,"a\\nb"我希望它成为"a\nb"。我已经尝试了以下所有方法,但似乎都没有效果;
"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并且替换似乎没有按照我的预期进行。
\\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。但是替换并不能像我想的那样替换斜线。
无需为此使用replace。
您所拥有的是一个编码字符串(使用string_escape编码),并且想要对其进行解码:
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!'