Python: заменить апостроф (') на обратный слэш+апостроф (\')
In [1]: print "nicola 'pitersky'".replace("'", "\\'")
nicola \'pitersky\'
>>> a = "a'b"
>>> b = a.replace("'", "\\'")
>>> print b
a\'b
Проблема решилась
Нет замены потому, что метод replace не находит апостроф. Ни экранированный, ни неэкранированный.Причина в том, что используются разные знаки.
Один вариант тебе выше показали:
b = a.replace("'", "\\'")Учти, что метод replace не производит замен внутри строковой переменной, а возвращает новую строку, поэтому для сохранения результата необходимо присваивание.
Второй вариант (исправление твоего):
>>> a = "don't panic"Как видишь, применение знаков одного "стиля" исправило ситуацию. Правило применимо и для апострофа, и для кавычек.
>>> b = a.replace('\'', '\\\'')
>>> b
"don\\'t panic"
>>> print b
don\'t panic
>>> '\''=="'"
True
>>> "\""=='"'
True
Третий вариант — подготовка всей строки к эскейпингу:
b = a.encode('string_escape')В такой ситуации не только апостроф, но и всё содержимое переменной, подлежащее экранированию, будет обработано должным образом.
Как?
Оставить комментарий
5065584
Нужно заменить (') на (\') в Python. Я пытался это сделать так:Вывод
Нет замены потому, что метод replace не находит апостроф. Ни экранированный, ни неэкранированный. Если пытаться заменить на пустую строку, тоже ничего не происходит.
Это делалось в Pycharm с 64bit Python на Windows 7.