Нахождение длинного слова, разбитого новой строкой - PullRequest
3 голосов
/ 06 марта 2019

Я пытаюсь найти список слов, и поэтому я сгенерировал этот код:

narrative = "Lasix 40 mg b.i.d., for three days along with potassium chloride slow release 20 mEq b.i.d. for three days, Motrin 400 mg q.8h"

meds_name_final_list = ["lasix", "potassium chloride slow release", ...]


def all_occurences(file, str):
    initial = 0
    while True:
        initial = file.find(str, initial)
        if initial == -1:
            return
        yield initial
        initial += len(str)
    offset = []
    for item in meds_name_final_list:
        number = list(all_occurences(narrative.lower(), item))
        offset.append(number)

Желаемый результат: список начальных индексов / индексов в корпусах слова, которое нужно искать, например:

offset = [[1], [3, 10], [5, 50].....]

Этот код отлично работает для не очень длинных слов, таких как антибиотики, отделение неотложной помощи, инсулин и т. Д. Однако длинные слова, которые прерываются из-за нового межстрочного интервала, не распознаются вышеуказанной функцией.

Желаемое слово: potassium chloride slow release

Любое предложение, чтобы решить эту проблему?

1 Ответ

3 голосов
/ 06 марта 2019

Как насчет этого?

def all_occurences(file, str):
    initial = 0
    file = file.replace('\n', ' ')
    while True:
      initial = file.find(str, initial)
      if initial == -1: return
      yield initial
      initial += len(str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...