Python: удаление первого и последнего символов в строке (при некоторых условиях)
стоит задача:
есть строка, если строка заключена в кавычки или в круглые скобки, то удалить их, затем убрать пробельные символы (даже если ничего удалять не требовалось)
код такой:
def mystrip(text):
return (text[1:-1] if text[0] == text[-1] and text[0] in '\'"' or text[0] == '(' and text[-1] == ')' else text).strip()
Вопрос чисто эстетический - а как можно эту задачу сделать красиво (т.е. понятный, но при этом и короткий код)? Через регулярки?
Ответы (2 шт):
Автор решения: Daniil Loban
→ Ссылка
Короче можно, но насколько понятнее зависит уже от знания регулярок, в данном случае используется | - как разделитель вариантов для match:
^".*"$двойные кавычки^\(.*\)$скобки (должны быть экранированы)^'.*'$одинарные кавычки (тоже экранируем или внешние делаем''')
код (переносы чтобы избежать скрола):
import re
def mystrip(text):
return (text[1:-1] if re.match(r'^".*"$|^\(.*\)$|^\'.*\'$', text) else text)
.strip()
Автор решения: Алексей Р
→ Ссылка
Вариант покороче исходного без regexp:
texts = ['"(12345)"', '( ..... )', ' 6789 ', ' "879)', '" aaaa"']
drop = {'()', '""', '**', '##'} # итд
for t in texts:
out = (t[1:-1] if t[0] + t[-1] in drop else t).strip()
print(out)
(12345)
.....
6789
"879)
aaaa