2014-01-21 3 views
1

У меня есть строка This is a Test и переданный параметр s. Как я могу избежать всех s-символов этой первой строки?Как избежать определенных символов строки?

Это должно привести к Thi\s i\s a Te\sT

Я пробовал так:

rstr = rstr.replace(esc, r"\\" + esc) 

Но это приведет к \\ перед каждым s

+0

На самом деле используйте просто '' \\ "' вместо 'r '\\" '. Создание его сырой строки означает, что \\ действительно становится \\, но вы все равно не можете закончить строку одним обратным слэшем. – RemcoGerlich

ответ

2

r'\\' производит буквальную двойную обратное косую черту:

>>> r'\\' 
'\\\\' 

Не используйте сырую строку здесь, просто используйте '\\':

>>> 'This is a Test'.replace('s', '\\s') 
'Thi\\s i\\s a Te\\st' 

Не путайте представление Python со значением. Чтобы облегчить отладку и круговое отключение, интерпретатор Python использует функцию repr() для повторения результатов.

repr() строки использует Python буквального обозначения, в том числе избежать каких-либо обратной косой черты:

>>> r'\s' 
'\\s' 
>>> len(r'\s') 
2 
>>> print r'\s' 
\s 

Фактическое значение содержит только один символ, а потому, что обратная косая черта может начать символы со специальными значениями, такие как \n (новая строка) или \x00 (нулевой байт), они представляются экранированными, так что вы можете вставить значение непосредственно обратно в интерпретатор.

Смежные вопросы