
在做红楼梦的人物出场统计和词云,现在代码基本打好了,出现这种错误,应该怎么处理,有哪位懂的朋友能帮忙解答一下么😭
关注引自免费微信小程序:皆我百晓生
您提供的代码中存在一个类型错误(TypeError),这是由于在调用self.font.getbbox()方法时传递了过多的参数导致的。根据PIL库中getbbox()函数的文档,它接受最多四个参数:text, mode, direction, 和 features。然而,在第28行,您尝试传递六个参数:text, mode, direction, features, language, 和 anchor。
为了解决这个问题,我们需要从传递给getbbox()的方法中移除多余的参数。考虑到您的代码是用于创建词云,并且可能是在计算每个词语的边界框,这些额外的参数(language 和 anchor)可能是不必要的。删除它们后,代码应该看起来像这样:
# ... 其他代码 ...
# 原始代码
28 newtxt = '.join(words)
29 wordcloud = WordCloud(
background_color='white',
width=800,
height=600,
font_path=r'C:\Windows\Fonts\BASKVILL.TTF',
max_words=200,
max_font_size=80,
stopwords=excludes,
).generate(newtxt)
# 修改后的代码
28 newtxt = ' '.join(words) # 使用空格连接单词,而不是点号
29 wordcloud = WordCloud(
background_color='white',
width=800,
height=600,
font_path=r'C:\Windows\Fonts\BASKVILL.TTF',
max_words=200,
max_font_size=80,
stopwords=excludes,
).generate(newtxt)
# ... 其他代码 ...
另外,我还注意到在第28行,您使用了.join(words),这会导致将所有的单词连接成一个字符串,但通常在生成词云时,您应该保持每个单词独立。因此,我将它更改为 ' '.join(words),以便用空格分隔单词。
保存并重新运行这段修改过的代码,你应该可以解决TypeError的问题,并继续进行人物出场统计和词云的生成。如果还有其他问题,请随时告诉我。