以下显示了我想要做的事情:
>>> "input '\t' quote tab".replace("'\\",'replace')
"input '\t' quote tab"
>>>
输出显示引号和反斜杠未被替换。
我想知道为什么。
答案 0 :(得分:3)
\t
是一个字符(由@ MaLiN2223指出)。如果你想要它是" raw"那么你需要使用原始字符串:
>>> r"input '\t' quote tab".replace("'\\", 'replace')
"input replacet' quote tab"
以下"转义序列"被视为一个字符,除非' r'或者' R'使用字符串(取自python3 documentation和python2 equivalent):
\newline Ignored
\\ Backslash (\)
\' Single quote (')
\" Double quote (")
\a ASCII Bell (BEL)
\b ASCII Backspace (BS)
\f ASCII Formfeed (FF)
\n ASCII Linefeed (LF)
\N{name} Character named name in the Unicode database (Unicode only)
\r ASCII Carriage Return (CR)
\t ASCII Horizontal Tab (TAB)
\uxxxx Character with 16-bit hex value xxxx (Unicode only)
\Uxxxxxxxx Character with 32-bit hex value xxxxxxxx (Unicode only)
\v ASCII Vertical Tab (VT)
\ooo Character with octal value ooo
\xhh Character with hex value hh
答案 1 :(得分:2)
我认为这是因为python不会将此\
视为\
,而是\t
的一部分。由于\t
是单个字符,因此无法替换部分字符。
在此示例中的位置:
"input '\t' quote tab'\\".replace("'\\",'replace')
输出将是:
"input '\t' quote tabreplace"