2401_84577867 2024-04-23 08:50 采纳率: 69.2%
浏览 3
已结题

出现这种问题错误该怎么修改

img


在做红楼梦的人物出场统计和词云,现在代码基本打好了,出现这种错误,应该怎么处理,有哪位懂的朋友能帮忙解答一下么😭

  • 写回答

7条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-23 08:51
    关注

    引自免费微信小程序:皆我百晓生

    您提供的代码中存在一个类型错误(TypeError),这是由于在调用self.font.getbbox()方法时传递了过多的参数导致的。根据PIL库中getbbox()函数的文档,它接受最多四个参数:text, mode, direction, 和 features。然而,在第28行,您尝试传递六个参数:text, mode, direction, features, language, 和 anchor

    为了解决这个问题,我们需要从传递给getbbox()的方法中移除多余的参数。考虑到您的代码是用于创建词云,并且可能是在计算每个词语的边界框,这些额外的参数(languageanchor)可能是不必要的。删除它们后,代码应该看起来像这样:

    # ... 其他代码 ...
    
    # 原始代码
    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的问题,并继续进行人物出场统计和词云的生成。如果还有其他问题,请随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月6日
  • 创建了问题 4月23日