Поиск и замена со ссылкой на список - PullRequest
0 голосов
/ 31 мая 2018

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

Пример: список

grp=["MEDICAL | MEDCL | MDCL | MEDICINE | MEDCL | ME | MEDICA | MDM | MEDI | M | MEDICIN | MEDIC | MEDICI / MED /"," CENTRA| CENTRE| CNTR| CTRS| CENTERS|CENTRAL | CENTER| CEN| CENT| CNTRS| CENTERR| CE| CT| CENTE| CENTERE / CTR /"," MAINE / ME /"]

Ввод:

str="CENTRAL MAINE MEDICAL CENTER"

Ожидаемый результат:

"CTR ME MED CTR"

Код попытки:

for i in range(len(grp)):
    res_split=re.findall(r"[^/]+",grp[i])
    for x in res_split[0].split("|"):
        str = str.replace(x,res_split[1])

str

Вывод:

' CTR R R R R MED  MED CTR R R R R '

1 Ответ

0 голосов
/ 31 мая 2018

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

(?:SEARCH_WORD).*?\/\s*(\w+)

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

import re

grp=''.join(["MEDICAL | MEDCL | MDCL | MEDICINE | MEDCL | ME | MEDICA | MDM | MEDI | M | MEDICIN | MEDIC | MEDICI / MED /"," CENTRA| CENTRE| CNTR| CTRS| CENTERS|CENTRAL | CENTER| CEN| CENT| CNTRS| CENTERR| CE| CT| CENTE| CENTERE / CTR /"," MAINE / ME /"])
s = "CENTRAL MAINE MEDICAL CENTER"

x = [re.findall(r'(?:{}).*?\/\s*(\w+)'.format(i), grp) for i in s.split()]
print(' '.join([j for i in x for j in i]))

# Result
CTR ME MED CTR

RegEx Объяснение:

(                        // start of group 
  ?:                     // non-capture group
  SEARCH_WORD            // matches the search word
)                        // end of group
.*?                      // matches any character lazily
\/                       // matches a forward slash /
\s*                      // matches 0 or more whitespace characters
(                        // start of capture group 
  \w+                    // matches 1 or more word characters
)                        // end of capture group
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...