.findall 正则表达式不会分配给变量

.findall Regular Expression won't assign to a variable

我正在尝试创建一个函数来搜索 nltk.text.Text 输入块并输出 "contribute" 或 "donate" 之后的所有单词(请参阅下面的正则表达式)。

正则表达式工作得很好,但是当我试图将它分配给一个变量以使我的函数 return 它时,变量没有更新并且我的函数 return 什么也没有.

即类型(捐赠)=无类型对象

我最终想将此函数应用于数据框的每一行并将捐赠值输出到该数据框中的新列,但是当我现在尝试时,每个输出都是 "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> (<.*>+?) <\.|\,|\;> ")

Returns 这是一个示例文本:

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)

Returns:

<Text: M. Jay Janssen , age 95 of Zeeland...>
Resthaven Care Community
None

正如 R Nar 上面提到的那样,.findall 正则表达式只打印 return 任何东西……TokenSearcher 完美地解决了这个问题……它确实输出了一个标记列表而不是一个字符串,但是完成任务。

from nltk.text import TokenSearcher

def find_donation_orgs(x):
    text = nltk.Text(nltk.word_tokenize(x))
    donation = TokenSearcher(text).findall(r"<\.> <.*>{,15}? <donat.*|contrib.*|Donat.*|Contrib.*> <.*>*? <to> (<.*>+?) <\.|\,|\;> ")
    return donation