Я пытаюсь создать функцию, которая ищет фрагмент ввода nltk.text.Text и выводит все слова, следующие за «Contribute» или «donate» (см. Регулярное выражение ниже)..findall Регулярное выражение не присваивает переменной
Регулярное выражение работает отлично, однако, когда я пытаюсь назначить его переменной, чтобы моя функция возвращала его, переменная не обновляется, и моя функция ничего не возвращает.
т.е. типа (пожертвование) = NoneType объект
В конце концов я хочу, чтобы применить эту функцию для каждой строки кадра данных и вывода значения пожертвования нового столбца в кадре данных, но когда я пытаюсь сейчас , каждый вывод не является "None"
def find_donation_orgs(x):
text = nltk.Text(nltk.word_tokenize(x))
donation = text.findall(r"<\.> <.*>{,15}? <donat.*|contrib.*|Donat.*|Contrib.*> <.*>*? <to> (<.*>+?) <\.|\,|\;> ")
return donation
Мой FindAll регулярное выражение делает работу сам по себе:
text.findall(r"<\.> <.*>{,15}? <donat.*|contrib.*|Donat.*|Contrib.*> <.*>*? <to> (<.*>+?) <\.|\,|\;> ")
возвращает это для примера фрагмент текста:
visit brother Alfred Fuller; the research of Dr. Giuseppe Giaccone at
Georgetown University
Для вашего удобства:
text = nltk.Text(nltk.word_tokenize(df.Obit.iloc[7]))
print(text)
x = text.findall(r"<\.> <.*>{,15}? <donat.*|contrib.*|Donat.*|Contrib.*> <.*>*? <to> (<.*>+?) <\.|\,|\;> ")
print(x)
возвратов:
<Text: M. Jay Janssen , age 95 of Zeeland...>
Resthaven Care Community
None
Вы уверены, что ваше регулярное выражение работает? возврат «NoneType» обычно не означает совпадений –
yep, он работает сам по себе ... см. обновление выше –
, если вы посмотрите на [docs] (http://www.nltk.org/_modules/nltk /text.html), используя 'Text.findall', на самом деле НЕ ВОЗВРАЩАЕТ, он просто печатает его. вместо этого он выглядит как передача объекта 'Text' объекту TokenSearcher и вызов' .findall' в 'TokenSearcher' будет фактически возвращать ваши совпадения –