Python学习——调用jieba包后,打印输出<generator object Tokenizer.cut at 0x1079e5bc0>

背景:

今天在学wordcloud时,用到jieba包分词,写了以下代码:

tex=("惊世骇俗者寥若晨星,大多数人,只能走不出平凡,而又乐意在平凡中默默生存。 ")
cut=jieba.cut(tex)
print(cut)

以为会输出分好的词,结果输出结果为:
<generator object Tokenizer.cut at 0x107f89bc0>

问题原因:

当在Python中打印一个生成器对象(Generator Object),如使用print()函数处理一个由Tokenizer.cut()方法生成的结果,你看到类似 generator object Tokenizer.cut at 的输出,是因为生成器的工作原理决定了它不会立即计算所有结果,而是按需生成。

Tokenizer.cut() 函数通常是用于文本处理,如分词,它返回一个生成器,每次迭代都会提供一部分切分后的单词或者其他处理过的元素。当你打印这个生成器时,实际上并没有遍历完整个序列,所以只显示了生成器的状态以及当前位置(即at后面的部分),而没有显示所有的元素。这并不是错误,而是生成器的特性之一。如果你想查看整个序列的内容,应该对生成器进行完全迭代,例如使用for循环或者将生成器转换成列表。

解决方案:

方法一:使用for循环

tex=("惊世骇俗者寥若晨星,大多数人,只能走不出平凡,而又乐意在平凡中默默生存。 ")
cut=jieba.cut(tex)
for item in cut:
    print(item)

输出:

惊世骇俗
者
寥若晨星
,
大多数
人
,
只能
走不出
平凡
,
而
又
乐意
在
平凡
中
默默
生存
。

方法二:将生成器转换成列表

tex=("惊世骇俗者寥若晨星,大多数人,只能走不出平凡,而又乐意在平凡中默默生存。 ")
cut=jieba.cut(tex)
print(list(cut))

输出:

['惊世骇俗', '者', '寥若晨星', ',', '大多数', '人', ',', '只能', '走不出', '平凡', ',', '而', '又', '乐意', '在', '平凡', '中', '默默', '生存', '。', ' ']

方法三:使用join语句

tex=("惊世骇俗者寥若晨星,大多数人,只能走不出平凡,而又乐意在平凡中默默生存。 ")
cut=jieba.cut(tex)
string=' '.join(cut) #用空格分隔
print(string)

输出:

惊世骇俗 者 寥若晨星 , 大多数 人 , 只能 走不出 平凡 , 而 又 乐意 在 平凡 中 默默 生存 。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值