2017-02-04 4 views

ответ

3

\t один символ (как указал @ MaLiN2223). Если вы хотите, чтобы быть «сырой», то вам нужно использовать сырые строки:

>>> r"input '\t' quote tab".replace("'\\", 'replace') 
"input replacet' quote tab" 

Следующая «спасся последовательности», рассматриваются как один-символ, если в «г» или не используется строка «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 
+0

Поскольку вопрос теги OP включают Python 2 Я хотел бы изменить документацию [https://docs.python.org/2/reference/lexical_analysis.html#string-literals] (https://docs.python.org/2/reference/lexical_analysis.html#string-literals) во избежание путаницы. – MaLiN2223

+0

Ух, я бы не зашел так далеко, чтобы включить 2.4 документацию, но взяла точку! Я добавил страницу документации python2.7. – MSeifert

+1

Да, мое плохое. Это была первая ссылка google :(Я отредактировал свой коммент. Однако я хочу, чтобы мы просто позволили python2 умереть – MaLiN2223

2

Я думаю, это связано с тем, что python не видит этого конкретного \ как \, но как часть \t. А так как \t является единственным символом, вы не можете заменить его часть.

Где, как в этом примере:

"input '\t' quote tab'\\".replace("'\\",'replace') 

выход будет:

"input '\t' quote tabreplace"