Python: удаление всех слов, которые начинаются с заглавной буквы и не возникают после пунктуации - PullRequest
0 голосов
/ 16 февраля 2019

Я хочу использовать регулярное выражение, чтобы удалить все слова из текста, которые начинаются с заглавной буквы и удовлетворяют этим двум условиям:

1) За ними следуют только строчные буквы или "'" (притяжательные)) или знаки препинания (.,?!).

2) Они не идут после ".", "!"и "?"

Я пытался

import re

myString='The name of her company is Water Company WC 123 WaTerCompany! She was going to meet Daniel. Why? Because Daniel is her boy friend. Patricia? The daughter of Susana! Look, Daniel\'s car is white'
regex='([A-Z][a-z\']*)(\s[A-Z][a-z\']*)*'
txt = re.sub(regex, " ", myString)        

Я получаю

name of her company is    123    !   was going to meet  .  ?   is her boy friend.  ?   daughter of  !  ,   car is white

Я хочу

name of her company is  WC 123 WaTerCompany! She was going to meet . Why? Because is her boy friend. Patricia? The daughter of ! Look, car is white

1 Ответ

0 голосов
/ 16 февраля 2019

Чтобы удалить целых слов , вы хотите использовать \b граничные привязки, чтобы не совпадать с частичным словом.Чтобы удалить слова, которым предшествует пунктуация, вы можете использовать отрицательный вид сзади, при условии , что между пунктуацией и первой буквой всегда есть фиксированное количество пробелов.

Я собираюсьпредположить, что между пунктуацией и следующей буквой всегда есть один пробел.Вы всегда можете сначала нормализовать ввод, заменив несколько пробелов одним пробелом.

Это заставит регулярное выражение удалить следующие слова:

\b(?<![!?.]\s)[A-Z][a-z]*(?:'s)?\b

и демо:

>>> import re
>>> myString='The name of her company is Water Company WC 123 WaTerCompany! She was going to meet Daniel. Why? Because Daniel is her boy friend. Patricia? The daughter of Susana! Look, Daniel\'s car is white'
>>> regex = r'\b(?<![!?.]\s)[A-Z][a-z]*(?:'s)?\b'
>>> re.sub(regex, " ", myString)
'  name of her company is     WC 123 WaTerCompany! She was going to meet  . Why? Because   is her boy friend. Patricia? The daughter of  ! Look,   car is white'

или попробуйте шаблон онлайн, на regex101 .

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