解决wordcloud库生成词云时出现’gbk‘编码报错问题

前言:

大家好,我是python新人小白。学python也是自己在摸爬滚打,对python也是知之甚少,写博客是一方面是在记录自己学python时所遇到的问题以作备忘;另一方面也是真心希望各位python大佬们能够对我的问题进行指点迷津,通过各位大佬的评论汲取经验。TKS whenever!

问题描述:

今天在使用wordcloud库对txt文件中的中文内容生成词云时,遇到了编码错误提示,但奇怪的是txt文件中保存的是纯英文时,在生成词云的时候,一点毛病都没有!下面是我写的简单代码以及报错提示

from scipy.misc import imread
import jieba
new_mask = imread('carton2.jpg')
with open('词云填充内容.txt','r') as file:
    raw_txt = file.read()
    pro_txt = jieba.lcut(raw_txt)
    final_txt = ' '.join(pro_txt)
    alen = wordcloud.WordCloud(background_color = 'white', \
                               font_path="msyh.ttc",\
                               width = 1000,\
                               height = 1000,\
                               max_words = 200,\
                               mask = new_mask,\
                               ).generate(final_txt)
alen.to_file('词云2.png')

在这里插入图片描述

解决方案:

在网上查看了一些解决方案,基本上都是在open时设置编码格式进行解决,这种方法成功解决了我的问题。以下是我参考的原文链接:原文连接
谁知

图片上的字体设置一定不要忘了添加,不然生成词云时就会像下面一样
在这里插入图片描述
最后献上成功生成的词云图片,虽然代码写的很简单,不过也着实让小白基动,咳咳,兴奋了一下。
在这里插入图片描述

学习总结:

1、在运用wordcloud库时,由于所有的功能都封装在WordCloud()中了,所以在实际使用是,一定要实例化一个WordCloud类的对象,就像代码中的‘alen’一样;
2、词云生成时,需要以空格或者标点符号为分隔符号对目标文件进行分词处理。在处理英文文本时,由于每个英文单词都是以空格分开的,所以不需要我们在进行分词操作,但是中文就不一样了,需要使用jieba库进行分词处理,流程大概是这样的:
(1)首先在.py文件所在路径下创建一个包含中文内容的txt文件;
(2)open(‘词云填充内容.txt’,‘r’,encoding=‘编码格式’)—设置编码格式;
(3)read()----读出中文,输出字符串s1
jieba.lcut()—对字符串s1进行精确分词,以列表类型输出
join()函数----将列表各元素(即分好的词语)以空格连接起来,输出字符串s2
(4)wordcloud.WordCloud().generate()----设置参数(想要改变词云形状的可以设置mask参数)
(5)to_file()----生成词云图片
3.打完收工。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值