Использование Regex для сопоставления слов в списке, - PullRequest
0 голосов
/ 20 апреля 2020

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

Например, у меня есть список:

[' MRI', 'fMRI ', 'PPE', 'FFE']

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

Так что для приведенного выше списка найдите, содержит ли текст

Magnetic resonance imaging
functional Magnetic resonance imaging
personal protection equipment
None

Я нашел несколько способов сделать это, но не когда слова находятся в списке.

Если кто-нибудь сможет здесь помочь, это будет с благодарностью.

1 Ответ

1 голос
/ 20 апреля 2020

Используйте библиотеку re. Используйте здесь параметр flags=re.I, если регистр не учитывается.

import re
acronyms=['  MRI', 'fMRI', 'PPE', 'FFE']
text="""pull porous experiment
 public protection expertise
personal protective 
equipment
here is a magnetic resonance interglobular section
with a certain energy measure is on a table"""
matched={}
for a in acronyms:
  pattern=''
  for letter in a.strip():
    pattern+='[ ]*{}[^ \n]+[ \n]+'.format(letter)
  pattern+=''
  print(a.strip(),pattern)
  matched.update({a.strip():re.findall(pattern,text,flags=re.I)})

print(matched)

совпало, теперь должно содержать словарь с каждой аббревиатурой и список совпадений для каждого.

Вывод matched теперь (обратите внимание, что аббревиатуры были удалены из начальных и конечных пробелов)

{'MRI': [' magnetic resonance interglobular '], 'fMRI': [], 'PPE': ['pull porous experiment\n ', 'public protection expertise\n', 'personal protective \nequipment\n'], 'FFE': []}

Это позволяет результатам занимать несколько строк, но эти символы конца строки (\n) включаются в результаты сопоставления. Если вы предпочитаете, чтобы они были пробелами, вы можете использовать, например, re.sub для замены [\n ]+ на .

Вот ссылка на библиотеку re: https://docs.python.org/3/library/re.html. Вот одно из многих потенциально полезных обобщенных c объяснений регулярных выражений: https://docs.python.org/3/howto/regex.html#regex -howto .

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