Страницы

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

понедельник, 9 декабря 2019 г.

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

#python #регулярные_выражения #работа_с_текстом


Задача:
Из строки Ха-ха!? получить Ха-ха. Т.е. удалить только последние символы !?.
Мой пример делает лишнего и на выходе Хаха

import re
valids = re.sub(r"[^A-Za-zА-Яа-я]+", '', 'Ха-ха!?')
print(valids)


Помогите, пожалуйста, направить регулярку на правильный путь..

UPD:
Вместо !? может быть любая комбинация символов (!!!, ?), :) ). Важно то, что она в конце.
    


Ответы

Ответ 1



Можно и без регулярок обойтись: 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}+$', '', 'Ха-ха!?')) # Ха-ха

Ответ 2



В регулярных выражениях есть символ, означающий конец строки - $ Попробуйте так: import re valids = re.sub(r"[^\w]*$", '', 'Ха-ха!?') print(valids)

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

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