我正在尝试构建一个模块,该模块将计算文本中的所有颜色词,然后将其显示在饼图上。我已经将计数和图表单独编码,但我无法弄清楚如何连接它们。
现在我有:
def colorperc(text):
y0 = text.count("red")...text.count("rust")
y1 = ...
return {y0...y10}
colorperc(mobydick.txt)
...
fracs y0, y1...
如何获取这些返回值并将其插入饼图压缩?我只是一直收到错误:NameError:名称'y0'未定义
答案 0 :(得分:0)
首先,text.count
不太可能做你想做的事。
>>> "Red wired tired".count("red")
2
您可能希望逐行读取文本,小写并拆分每一行,然后更新Counter。然后正如Matt所说,你需要分配你的函数返回的值,而不是试图访问局部变量。
由于你的评论说你正在使用nltk,可能是这样的(未经测试)。我们假设您很高兴将整个文本记录在内存中,因为这与您的问题描述相符。
from collections import Counter
import matplotlib.pyplot as plt
import nltk
def countcolors(text)
tokens = nltk.word_tokenize(text)
tokens = map(lamda x: x.lower(), tokens)
ctr = Counter(tokens)
colorlist = ("red", "rust", "blue", "green")
colorcounts = dict((color,ctr[color]) for clr in colorlist)
return colorcounts
#we'll call the text in memory `mytext`
colors, counts = countcolors(mytext).items()
fig, ax = plt.subplots(1,1)
ax.pie(counts,labels=colors)
plt.show()
请注意,我们只需使用赋值(使用=
)来获取函数返回的值。