AV9*_*V94 0 python nltk python-3.x
我在Python中使用nltk库; 我的背景是Java.我不明白我写的代码的控制台输出.尽管我将初始化变量tokens作为列表,但为什么Python会返回一个奇怪的形式.
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import nltk
def tokenize_sentence(sentence):
tokens=[]
tokens = word_tokenize(sentence)
tokens = (word for word in tokens if word not in \
set(stopwords.words('english')))
return tokens;
a="John is an actor."
print(tokenize_sentence(a))
Run Code Online (Sandbox Code Playgroud)
输出:
<generator object tokenize_sentence.<locals>.<genexpr> at 0x10dc5b1a8>
Run Code Online (Sandbox Code Playgroud)
我看到这个输出类似于Java当我尝试打印未定义toString()方法的对象时所做的事情.
初始分配不是类型声明.Python的自由变量不具有类型声明.例如,你被允许写
x = 7
x = []
x = "Hello"
Run Code Online (Sandbox Code Playgroud)
...并查看每个作业的x更改类型.
在这种情况下,您有三个独立的令牌分配.每个都以相同的方式工作:
忽略变量的先前值.当您构建一个内联生成器 - 您的(逐字...)表达式 - 并将其分配给令牌时,您将之前的值发送到位桶(即垃圾收集).当您打印生成器,而不是迭代其功能时,您获得了对象的Python表示.
正如Jim Fasarakis Hilliard已经提到过的,如果你想要一个列表,那么使用list comprehension语法:括号,而不是括号.另外,您是否打算使用先前的代币值进行任何处理?目前,我认为这些任务没有任何持久影响.