词云(wordcloud)报错:ValueError: We need at least 1 word to plot a word cloud, got 0.
一、现象
代码:
import wordcloud
sentence = 'I like you '
wc = wordcloud.WordCloud()
wc.generate(sentence)
wc.to_file('test.png')
报错:
ValueError: We need at least 1 word to plot a word cloud, got 0.
但是换一下:
import wordcloud
sentence = '尺寸超差错错错错错错错错错错错错错错错错错错 '
wc = wordcloud.WordCloud(font_path='msyh.ttc')
wc.generate(sentence)
wc.to_file('test.png')
不报错:
生成图片:
二、尝试解决
(一)尝试解决方法一
在github中找到了一个方法,方法是修改源码中的正则表达式
链接: link.
源码:
regexp = self.regexp if self.regexp is not None else r"\w[\w']+"
在 File “D:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\wordcloud\wordcloud.py”, (我的python在D盘,需要找到自己的site-packages\wordcloud\wordcloud.py的第573行,修改为\w+
即
regexp = self.regexp if self.regexp is not None else r"\w+"
但是这样还是没有解决问题,只读了一个单词
扫描二维码关注公众号,回复:
11204625 查看本文章
(二)尝试解决方法二
既然可能是正则的问题,又重新查了一下
\w+:是指匹配一个以上的任意字母、数字及下划线
照理说这里有八个字母,应当匹配上,尝试去掉空格
import wordcloud
sentence = 'Ilikeyou '
wc = wordcloud.WordCloud()
wc.generate(sentence)
wc.to_file('test.png')
没有报错:
是空格的问题吗?加上下划线,看看怎么样
import wordcloud
sentence = 'Ilikeyou '
wc = wordcloud.WordCloud()
wc.generate(sentence)
wc.to_file('test.png')
也OK!!
要把空格加上只能将源码修改为
regexp = self.regexp if self.regexp is not None else r".+"
修改后没有报错,且存在空格
但是可能会影响到其他使用,因而最好还是不要更改。
三、最终结论
按照需求更改正则表达式
修改地址为:
"D:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\wordcloud\wordcloud.py", (ps:我的python在D盘,需要找到自己的site-packages\wordcloud\wordcloud.py的第573行,修改这一行的正则表达式)