今天学习了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 3 import wordcloud 4 import chardet #用命令安装这个包"pip install chardet" 5 def get_encoding(file): 6 with open(file,‘rb‘) as f: #二进制方式读取,获取字节数据,检测类型 7 return chardet.detect(f.read()) #获取文件的编码方式 8 9 #打印文件编码 10 file_type = get_encoding(‘prime.txt‘) 11 print(file_type) 12 13 #制作词云 14 txt = open(‘prime.txt‘,‘r‘,encoding = ‘utf-16‘ ).read() 15 fo = wordcloud.WordCloud(width=1920,height=1080,font_path="msyh.ttf") 16 17 fo.generate(txt) 18 fo.to_file(‘prime3.jpg‘)
python的魅力:
原文:https://www.cnblogs.com/xier/p/10452510.html