Версия Python stripslashes PHP

Этот подход является самым коротким способом, о котором я могу думать.

Решение, основанное на событии DOMContentLoaded, работает только в том случае, если сценарий загружен перед документом, тогда как предложенная здесь ленивая проверка обеспечивает выполнение кода всегда, даже в сценариях, загруженных динамически позже, точно так же, как документ JQuery готов.

Этот код совместим со всеми браузерами (включая некоторые устаревшие, вплоть до IE6 и Safari для Windows).

(function ready() {
    if (!document.body) {setTimeout(ready, 50); return;}
    // Document is ready here
})();
11
задан ʇsәɹoɈ 30 May 2015 в 19:17
поделиться

4 ответа

Не полностью уверенный это - то, что Вы хотите, но..

cleaned = stringwithslashes.decode('string_escape')
13
ответ дан 3 December 2019 в 09:21
поделиться

Это походит на то, что Вы хотите, мог быть обоснованно эффективно обработан через регулярные выражения:

import re
def stripslashes(s):
    r = re.sub(r"\\(n|r)", "\n", s)
    r = re.sub(r"\\", "", r)
    return r
cleaned = stripslashes(stringwithslashes)
3
ответ дан 3 December 2019 в 09:21
поделиться

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.

-4
ответ дан 3 December 2019 в 09:21
поделиться

Можно, очевидно, связать все вместе:

cleaned = stringwithslashes.replace("\\n","\n").replace("\\r","\n").replace("\\","")

Это то, чем Вы были после? Или Вы надеялись на что-то более краткое?

0
ответ дан 3 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: