Попытка регулярного выражения всех заглавных слов, КРОМЕ слов, следующих сразу за точкой в ​​Python - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь заставить бота ползти по тексту и с высокой степенью точности впитывать все подходящие существительные / фразы. Итак, все, что написано с заглавной буквы в середине предложения, где все, что написано с заглавной буквы подряд, считается частью одной и той же фразы (и записи в списке).

Пока у меня есть:

tag_string = re.findall('([a-zA-Z]+)\s([A-Z][a-z]*)\s([a-zA-Z]+)', in_string)

Который имеет проблема с собственными существительными непосредственно предшествующих периодов. Также принимает окружающие строчные слова.

И у меня также есть:

#tag_string = re.findall('([a-zA-Z]+)\s([A-Z][a-z]*)(\s([a-zA-Z]+)|\.)', in_string)

, который принимает еще больше окружающих строчных слов, но менее восприимчив к проблеме предыдущего периода. Я был в этом часами. Кто-нибудь видит, что я делаю не так?

1 Ответ

0 голосов
/ 27 апреля 2020

Один из вариантов - сопоставить все, будучи уверенным в соответствии с периодом. Затем вы можете отфильтровать все совпадения, содержащие точку.

Примерно так \.? *[A-Z][a-z]*

Затем вы можете отфильтровать оскорбительные совпадения.

import re

out = re.findall('\.? *[A-Z][a-z]*', 'This is a sentence. This is Another sentence.   And this is a anoth.er Hello')
outFil = [x for x in out if x[0] != '.']
print(out, outFil)

['This', '. Это "," Другой ",". And ',' Hello ']

[' This ',' Another ',' Hello ']

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