• python:用wordcloud生成一个文本的词云


    今天学习了wordcloud库,对《三国演义》生成了词云图片,非常漂亮。就想多尝试几个,结果发现一系列问题。
    最常出现的一个错误就是"UnicodeDecodeError : ...", 冒号后面的info不一而足。看意思也能猜出是"encoding"解码方式不对,于是各种编码尝试,有的默认或者"ANSI"就可以解码,有的必须用"UTF-8", 一狠心用了”errors='ignore', 结果顺利运行了,词云图片却是一堆乱码。
    注:如果图片各种方框,应该是字体没加对了(ttf文件系统里搜一下):font_path = "msyh.ttf"
    想着应该有个办法能获取到文本的编码方式啊,一搜果然如此, 链接:https://blog.csdn.net/qq_32618817/article/details/81363235. 

     1 #wordcloud_V2.py
     2 import jieba
     3 import wordcloud
     4 import chardet    
     5 #from scipy.misc import imread                  #用于生成图片形状的词云(安装命令:pip install -U scipy) #新版里用from imageio import imread代替
     6 def get_encoding(file):                         #用命令安装这个包"pip install chardet"
     7     with open(file,'rb') as f:                  #二进制方式读取,获取字节数据,检测类型
     8         encode = chardet.detect(f.read())       #获取文件的编码方式, 获取到的是个字典类型
     9         return encode['encoding']               #编码方式为encoding的键值。 为字符串类型。
    10 #mask = imread('pic.png')                       #加载图片
    11 #打印文件编码
    12 file_type = get_encoding('22.txt')
    13 print(file_type)
    14 
    15 
    16 #制作词云
    17 test = open('22.txt','r',encoding=file_type,errors='ignore')  #因为是字符串类型,这里可以直接引用。
    18 
    19 t_read = test.read()
    20 t_lcut = jieba.lcut(t_read)
    21 
    22 test.close()
    23 
    24 txt = " ".join(t_lcut)
    25 #print(type(t_lcut))
    26 
    27 
    28 fo = wordcloud.WordCloud(width=800,height=600,font_path="msyh.ttf",mask = mask)
    29 
    30 fo.generate(txt)
    31 fo.to_file('lala.jpg')

    结果如下

    蜗牛跑的慢,是因为没有腿儿!
  • 相关阅读:
    Java正则表达式入门1
    JAVA中正则表达式总结
    Java正则表达式入门
    java String.valueOf()的作用
    【HDOJ】3601 Coach Yehr’s punishment
    【HDOJ】4601 Letter Tree
    【HDOJ】3686 Traffic Real Time Query System
    【HDOJ】5296 Annoying problem
    【HDOJ】3553 Just a String
    【HDOJ】4426 Palindromic Substring
  • 原文地址:https://www.cnblogs.com/xier/p/10452510.html
Copyright © 2020-2023  润新知