Эффективно убрать пунктуацию, но не ".com" - PullRequest
2 голосов
/ 18 марта 2011

Я нашел эту тему: Лучший способ убрать пунктуацию из строки в Python

Но надеялся придумать способ сделать это, за исключением того, чтобы не удалять периоды в ссылках. Так что, если строка

I love using stackoverflow.com on Fridays, Saturdays and Mondays!

Вернется

I love using stackoverflow.com on Fridays Saturdays and Monday

На самом деле в идеале я мог бы передать список общих ссылок, таких как .com, .net, .ly и т. Д.

Ответы [ 3 ]

5 голосов
/ 18 марта 2011

Вы можете использовать отрицательные прогнозы:

[,!?]|\.(?!(com|org|ly))
3 голосов
/ 18 марта 2011

Условные обозначения предполагают использование пробела после . , ! или подобных вещей.Если вы можете рассчитывать на правильную типизацию, вы можете создать регулярное выражение, которое удаляет эти символы, только если за ними следуют пробелы.(Или, по крайней мере, сделайте так с символом полной остановки ).

Следующее регулярное выражение определит их:

[.,!?-](\s|$)

Другой возможностью является использование спискадопустимые имена доменов верхнего уровня.префиксы, такие как www. или другие, такие как @, которые сохраняют оригинальную пунктуацию вокруг них.

1 голос
/ 18 марта 2011

как насчет этого (что в значительной степени уже было предложено Феликсом Клингом):

original = 'I love using stackoverflow.com on Fridays, Saturdays and Mondays!'
unwanted_chars = ',.!?;:'

bits = original.split()
cleaned_up = ' '.join([bit.strip(unwanted_chars) for bit in bits])
print cleaned_up
# I love using stackoverflow.com on Fridays Saturdays and Mondays

edit:

ps: тогда 'cleaned_up' будет неуравненной строкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...