詞雲(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+"
但是這樣還是沒有解決問題,只讀了一個單詞
(二)嘗試解決方法二
既然可能是正則的問題,又重新查了一下
\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行,修改這一行的正則表達式)