Сведения о вопросе

Life

06:07, 29th August, 2020

Теги

python   string   escaping    

Python версия полосатых слешей PHP

Просмотров: 447   Ответов: 5

Я написал кусок кода для преобразования полосок PHP в допустимые эскейпы Python [обратная косая черта] :

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

Как я могу его сгущать?



  Сведения об ответе

LIZA

09:04, 15th August, 2020

Не совсем уверен, что это то, чего ты хочешь, но ... .

cleaned = stringwithslashes.decode('string_escape')


  Сведения об ответе

Chhiki

13:20, 16th August, 2020

Похоже, что то, что вы хотите, может быть достаточно эффективно обработано с помощью регулярных выражений:

import re
def stripslashes(s):
    r = re.sub(r"\\(n|r)", "\n", s)
    r = re.sub(r"\\", "", r)
    return r
cleaned = stripslashes(stringwithslashes)


  Сведения об ответе

appple

05:19, 23rd August, 2020

Очевидно, что вы можете объединить все вместе:

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

Это то, что тебе было нужно? Или вы надеялись на что-то более лаконичное?


  Сведения об ответе

+-*/

09:41, 9th August, 2020

использовать decode('string_escape')

cleaned = stringwithslashes.decode('string_escape')

С помощью

string_escape : создает строку, которая подходит в качестве строкового литерала в исходном коде Python

или объедините replace(), как ответ Уилсона.

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


  Сведения об ответе

PIRLO

08:16, 25th August, 2020

У Python есть встроенная функция escape(), аналогичная функции addslashes PHP, но нет функции unescape() (stripslashes), что, на мой взгляд, довольно смешно.

Регулярные выражения на помощь (код не тестировался):

p = re.compile( '\\(\\\S)')
p.sub('\1',escapedstring)

В теории, которая принимает что-либо из вида \\(не whitespace) и возвращает \(тот же символ)

edit: при дальнейшем рассмотрении регулярные выражения 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.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться