首页 > 解决方案 > 使用 flashText 库计算书中字符的出现次数

问题描述

我正在使用运行 python 3.7.4 的 Windows 机器。目前我正在尝试使用该flashText库来处理一个 .txt 文件,以计算我选择的字符的出现次数,并在处理文件时遇到错误。

我的代码如下

from flashtext import KeywordProcessor
#making a dictionary of major charaters
#a few major players for now
keyword_processor = KeywordProcessor(case_sensitive=False)

keyword_dict = {
    "Eddard" : ["ned", "eddard"],
    "Daenerys" : ["dany", "khaleesi"],
    "john" : ["john snow", "bastard"],
    "Tyrion" : ['imp', 'halfman' , 'tyrion Lannister' ],
    "bran" : ['bran stark']

 }
keyword_processor.add_keywords_from_dict(keyword_dict)
text_file = open("gameofthrones.txt", "r" , encoding="utf8")

keywords_found = keyword_processor.extract_keywords(text_file)
print(keywords_found)

text_file.close()

我收到一个我不太明白的错误:

C:\Users\MLMir\Desktop\python>stackoverflow.py
Traceback (most recent call last):
  File "C:\Users\MLMir\Desktop\python\stackoverflow.py", line 24, in <module>
    keywords_found = keyword_processor.extract_keywords(text_file)
  File "C:\Users\MLMir\Anaconda3\lib\site-packages\flashtext\keyword.py", line 475, in extract_keywords
    sentence = sentence.lower()
AttributeError: '_io.TextIOWrapper' object has no attribute 'lower'

我尝试将其更改为列表,但这只是引发了不同的属性错误。

标签: python

解决方案


起初,在空文件中搜索关键字是没有意义的。

其次,extract_keywords 方法需要一个字符串,而不是文件。lower 不是文件的方法。


推荐阅读