Задача:
Из строки Ха-ха!? получить Ха-ха. Т.е. удалить только последние символы !?.
Мой пример делает лишнего и на выходе Хаха
import re
valids = re.sub(r"[^A-Za-zА-Яа-я]+", '', 'Ха-ха!?')
print(valids)
Помогите, пожалуйста, направить регулярку на правильный путь..
UPD:
Вместо !? может быть любая комбинация символов (!!!, ?), :) ). Важно то, что она в конце.
Ответ
Можно и без регулярок обойтись:
print('Ха-ха!?'.rstrip('!?')) # 'Ха-ха'
Или взять набор символов из модуля string
import string
print('Ха-ха!?'.rstrip(string.punctuation)) # 'Ха-ха'
rstrip удаляет справа, lstrip удаляет слева, а strip слева и справа
Или с такой регуляркой:
print(re.sub(r"[!?]+$", '', 'Ха-ха!?')) # 'Ха-ха'
@jfs предложил такой вариант:
# pip install regex
import regex as re
print(re.sub(r'\p{P}+$', '', 'Ха-ха!?')) # Ха-ха
Комментариев нет:
Отправить комментарий