Страницы

Поиск по вопросам

пятница, 12 октября 2018 г.

Как удалить знаки пунктуации (препинания) из конца строки?

Задача: Из строки Ха-ха!? получить Ха-ха. Т.е. удалить только последние символы !?. Мой пример делает лишнего и на выходе Хаха
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}+$', '', 'Ха-ха!?')) # Ха-ха

Комментариев нет:

Отправить комментарий