我正在使用 NLTK 包,它有一个函数可以告诉我给定的句子是积极的、消极的还是中性的:
from nltk.sentiment.util import demo_liu_hu_lexicon demo_liu_hu_lexicon('Today is a an awesome, happy day') >>> Positive
问题是,该函数没有返回语句 - 它只是将“Positive”、“Negative”或“Neutral”打印到 stdout。它隐式返回的只是一个NoneType对象。(这是该函数的源代码。)
NoneType
有什么方法可以捕获这个输出(除了弄乱我的机器上的 NLTK 源代码)?
import sys from io import StringIO class capt_stdout: def __init__(self): self._stdout = None self._string_io = None def __enter__(self): self._stdout = sys.stdout sys.stdout = self._string_io = StringIO() return self def __exit__(self, type, value, traceback): sys.stdout = self._stdout @property def string(self): return self._string_io.getvalue()
像这样使用:
with capt_stdout() as out: demo_liu_hu_lexicon('Today is a an awesome, happy day') demo_liu_hu_lexicon_output = out.string