2013-06-25 2 views
4

Это похоже на ошибку. Я не могу заменить символ в строке с одной обратной косой черты:Заменить символ с помощью обратного слэша - Python

>>>st = "a&b" 
>>>st.replace('&','\\') 
'a\\b' 

Я знаю, что '\' не является законным, так как строка \ ускользает последний '. Однако я не хочу, чтобы результат был 'a\\b'; Я хочу, чтобы это было 'a\b'. Как это возможно?

ответ

11

Вы смотрите строку Представление, которое само является истинным строковым литералом Python.

\\ сам по себе один слэш, но отображается как экранированный символ, чтобы сделать значение допустимой литеральной строкой Python. Вы можете скопировать и вставить эту строку обратно в Python, и она даст такое же значение.

Используйте print st.replace('&','\\'), чтобы увидеть, что отображается текущее значение, или тест на длину полученного значения:

>>> st = "a&b" 
>>> print st.replace('&','\\') 
a\b 
>>> len(st.replace('&','\\')) 
3 
+0

Идеальный ответ, спасибо. – Jordan