





Очевидно, вы можете объединить все вместе:
cleaned = stringwithslashes.replace("\n","\n").replace("\r","\n").replace("\","")
Это то, что вам было нужно? Или вы надеялись на что-то более лаконичное?
В Python есть встроенная функция escape (), аналогичная добавленной косой черте PHP, но нет функции unescape () (полосы косой черты), что, на мой взгляд, довольно смешно.
На помощь приходят регулярные выражения (код не тестировался):
p = re.compile( '\(\\S)')
p.sub('',escapedstring)
Теоретически это принимает что-либо в форме \\ (не пробел) и возвращает \ (тот же символ)
edit: При дальнейшем осмотре регулярные выражения Python ломаются до чертиков;
>>> escapedstring
'This is a \n\n\n test'
>>> p = re.compile( r'\(\S)' )
>>> p.sub(r"",escapedstring)
'This is a nnn test'
>>> p.sub(r"\1",escapedstring)
'This is a \1\1\1 test'
>>> p.sub(r"\",escapedstring)
'This is a \n\n\n test'
>>> p.sub(r"\()",escapedstring)
'This is a \(n)\(n)\(n) test'
В заключение, какого черта, Python.
Не совсем уверен, что это то, что вы хотите, но ...
cleaned = stringwithslashes.decode('string_escape')
Похоже, что то, что вы хотите, можно было бы достаточно эффективно обработать с помощью регулярных выражений:
import re
def stripslashes(s):
r = re.sub(r"\(n|r)", "\n", s)
r = re.sub(r"\", "", r)
return r
cleaned = stripslashes(stringwithslashes)
использовать decode('string_escape')
cleaned = stringwithslashes.decode('string_escape')
С помощью
string_escape : Produce a string that is suitable as string literal in Python source code
или объедините replace (), как ответ Уилсона.
cleaned = stringwithslashes.replace("\","").replace("\n","\n").replace("\r","\n")