Как удалить слова, начинающиеся со строчной буквы, из предложения с помощью регулярных выражений - PullRequest
3 голосов
/ 02 июля 2019

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

Мои данные были «применимы к этому законопроекту и являются его частью Illiam B GEISSLER»

import re 
text = "apply to this bill and are made a part thereof Illam B GEISSLER"  
result = re.sub(r"\w[a-z]", "", text)  
print(result) 

Я получил вывод как "I B GEISSLER" Требуется вывод как «Иллиам Б ГЕЙССЛЕР»

Ответы [ 4 ]

3 голосов
/ 02 июля 2019

Попробуйте найти шаблон \b[a-z]+\s* и замените его пустой строкой:

text = "apply to this bill and are made a part thereof Illam B GEISSLER"  
result = re.sub(r'\b[a-z]+\s*', "", text).strip()
print(result)

Это напечатает:

Illam B GEISSLER

Идея шаблона \b[a-z]+\s* состоит в том, что он соответствуеттолько целые слова , окруженные с обеих сторон границами слов.Обратите внимание, что мы вызываем strip, чтобы удалить все оставшиеся пробелы.

Еще один тонкий момент заключается в том, что шаблон удаляет все пробелы на RHS каждой соответствующей строчной буквы.Это делается для того, чтобы текст читался, если, например, некоторые совпадающие слова находятся между не совпадающими словами:

text = "United States Of a bunch of states called America"  
result = re.sub(r'\b[a-z]+\s*', "", text).strip()
print(result)

Это правильно печатает:

United States Of America
1 голос
/ 02 июля 2019

Попробуйте это,

import re
text = "apply to this bill and are made a part thereof Illam B GEISSLER"
result = re.sub(r"(\b[a-z]+)", '', text).strip()
print(result)

Вывод

Illam B GEISSLER
1 голос
/ 02 июля 2019

Вы можете искать заглавные слова в ссылке, вы можете найти пример

Regex - поиск заглавных слов в строке

0 голосов
/ 02 июля 2019

Это выражение также может работать:

\s*\b[a-z][a-z]*

Демо 1

Тест

import re

regex = r"\s*\b[a-z][a-z]*"

test_str = "apply to this bill and are made a part thereof Illam B GEISSLER apply to this bill and are made a part thereof Illam B GEISSLER"

subst = ""

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)

if result:
    print (result)

или, может быть, этот:

([A-Z].*?\b\s*)

Test

import re

regex = r"([A-Z].*?\b\s*)"
test_str = "apply to this bill and are made a part thereof Illam B GEISSLER apply to this bill and are made a part thereof Illam B GEISSLER"
print("".join(re.findall(regex, test_str)))

выход

Illam B GEISSLER Illam B GEISSLER

Демо 2

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