我有一个相关函数名列表,我想通过它来迭代,调用变量中保存的函数。但无论我如何尝试,我都会得到:" TypeError:' TweetTokenizer'对象不可调用"
遵循Calling a function of a module from a string with the function's name in Python中的解决方案(建议此问题是重复的),找到nltk模块中的函数并分配它们。但是我的结果" tok_alg"函数仍然失败,因为不可调用。关于为什么会发生这种情况的任何建议都将受到赞赏。
#!/usr/bin/env python
import nltk
import os
testTxt="I'll have a Bloomin' Onion."
Tokenizers = [ 'Tweet', 'MWE', 'TreebankWord' ]
for tokenizer in Tokenizers:
tokz = tokenizer + 'Tokenizer'
tok_alg = getattr(nltk, tokz)()
result = tok_alg(testTxt)
print(result)
列出函数确实有效,即
for tokenizer in [ TweetTokenizer(), MWETokenizer() ]:
result = tokenizer.tokenize(testTxt)
但建议通过getattr()转换str变量对NLTK不起作用。虽然这是优雅和实用的,但我需要字符串变量用于其他目的。当然有一些方法可以将它们变成函数调用。我错过了什么?