#python #regex #python-3.x #nlp
#python #регулярное выражение #python-3.x #nlp
Вопрос:
Я пытаюсь выполнить поиск по списку слов, и поэтому я сгенерировал этот код:
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)
Желаемый результат: список начального индекса / indexes в корпусах слова, для которого выполняется поиск, например:
offset = [[1], [3, 10], [5, 50].....]
Этот код отлично работает для не очень длинных слов, таких как антибиотики, отделение неотложной помощи, инсулин и т.д. Однако длинные слова, разделенные новым межстрочным интервалом, не обнаруживаются функцией выше.
Нужное слово: potassium chloride slow release
Есть предложения по решению этой проблемы?
Комментарии:
1.Можете ли вы отредактировать свой фрагмент кода, чтобы показать нам, какие именно входные данные вы предоставляете функции, каков результат и каким вы хотите, чтобы результат был? Является
str
"potassium chloride slow release"
?2. Вы могли бы просто сделать
file.replace("n", " ")
в начале.
Ответ №1:
Как насчет этого?
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)