У меня есть программа, которая ищет аббревиатуры в абзаце и определяет их на основе предшествующих слов из числа символов в аббревиатуре. Однако для аббревиатур, в которых есть такие слова, как «in» и «and», которые не являются частью аббревиатуры, у моего кода есть проблемы. По сути, я хочу, чтобы он считал предыдущий текст, только если слово начинается с заглавной буквы.
import re
s = "Too many people, but not All Awesome Dudes (AAD) only care about the Initiative on Methods, Measurement, and Pain Assessment in Clinical Trials (IMMPACT)."
allabbre = []
for match in re.finditer(r"\((.*?)\)", s):
start_index = match.start()
abbr = match.group(1)
size = len(abbr)
words = s[:start_index].split()[-size:]
definition = " ".join(words)
abbr_keywords = definition + " " + "(" + abbr + "}"
pattern='[A-Z]'
if re.search(pattern, abbr):
if abbr_keywords not in allabbre:
allabbre.append(abbr_keywords)
print(abbr_keywords)
Токовый выход:
Все удивительные парни (AAD}
Измерение и оценка боли в клинических испытаниях (IMMPACT}
Желаемый результат:
Все удивительные парни (AAD}
Инициатива по методам, измерению и оценке боли в клинических испытаниях (IMMPACT)