的所有人。我是一名初学程序员,我似乎无法在网络上的任何地方找到这些信息,所以我希望你们可以提供帮助。我的问题是,有时当我尝试打印结果时,终端会回吐“”或“”之类的东西,而不是结果。我实际上直接从一本书中获得了非常简短的代码行,并且仍然得到了这些结果。
以下是一些示例,可以更好地展示正在发生的事情。
在第一个示例中,“potato”只是随机文本文档的文件句柄名称。
import nltk
def diversity(potato):
return len(potato) / len(set(potato))
print diversity(potato)
#prints <function diversity at 0x107b5a848>">
或
import nltk
print bigrams(['make', 'me', 'some', 'bigrams'])
#prints <generator object bigram at 0x1088a4d20>
但是在教科书的例子中只显示正确的打印结果。如果知道这一点非常重要,我特意使用Bird,Klein和Loper的“自然语言处理Python”一书,我正在运行Python 2.7.9。
任何人都可以解释发生了什么,以及如何解决这个问题?这些是非常简单的代码行,答案非常简单,因此我的终端似乎拒绝打印正确答案的事实令人恼火和令人担忧。谢谢!
答案 0 :(得分:2)
第二个例子很容易解释。
nltk.bigrams
函数的返回值为generator。
如果你想看到它返回的实际值,你需要迭代它并打印它的值:
In [11]: for bigram in nltk.bigrams(['make', 'me', 'some', 'bigrams']):
....: print bigram
....:
('make', 'me')
('me', 'some')
('some', 'bigrams')