Этот подход является самым коротким способом, о котором я могу думать.
Решение, основанное на событии DOMContentLoaded, работает только в том случае, если сценарий загружен перед документом, тогда как предложенная здесь ленивая проверка обеспечивает выполнение кода всегда, даже в сценариях, загруженных динамически позже, точно так же, как документ JQuery готов.
Этот код совместим со всеми браузерами (включая некоторые устаревшие, вплоть до IE6 и Safari для Windows).
(function ready() {
if (!document.body) {setTimeout(ready, 50); return;}
// Document is ready here
})();
Не полностью уверенный это - то, что Вы хотите, но..
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)
Python имеет встроенный Escape () функция, аналогичная addslashes PHP, но никакой неEscape () функция (stripslashes), который в моем уме довольно смешон.
Регулярные выражения к спасению (код, не протестированный):
p = re.compile( '\\(\\\S)')
p.sub('\1',escapedstring)
В теории, которая берет что-либо формы \\(не пробел) и возвращается \(тот же символ)
править: После дальнейшего контроля регулярные выражения Python повреждаются как весь ад;
>>> escapedstring
'This is a \\n\\n\\n test'
>>> p = re.compile( r'\\(\S)' )
>>> p.sub(r"\1",escapedstring)
'This is a nnn test'
>>> p.sub(r"\\1",escapedstring)
'This is a \\1\\1\\1 test'
>>> p.sub(r"\\\1",escapedstring)
'This is a \\n\\n\\n test'
>>> p.sub(r"\(\1)",escapedstring)
'This is a \\(n)\\(n)\\(n) test'
В заключение что, черт возьми, Python.
Можно, очевидно, связать все вместе:
cleaned = stringwithslashes.replace("\\n","\n").replace("\\r","\n").replace("\\","")
Это то, чем Вы были после? Или Вы надеялись на что-то более краткое?