python - 使用 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'
我尝试将其更改为列表,但这只是引发了不同的属性错误。
解决方案
起初,在空文件中搜索关键字是没有意义的。
其次,extract_keywords 方法需要一个字符串,而不是文件。lower 不是文件的方法。
推荐阅读
- windows - windows上的docker里面的docker
- c# - 如何动态调用具有泛型类型参数的方法
- angular - MEAN Stack - MongoDB - 在具有两种不同条件的文档中循环
- dart - Flutter 如何更新变量并在不同的有状态小部件中使用它们?
- javascript - 具有唯一选择的多选下拉列表 - React JS
- javascript - 使用授权标头从 Geoserver 获取 JSON 文件会导致 MIME 类型错误
- python - 使用Python滚动页面时如何在列表标签内获取多个div元素文本
- r - 使用“fread”,如何从 csv 中消除注释行?
- c# - typeof(int[][]).GetArrayRank() 的值为 1
- sql-server - SQL Server 一些 CPU 在 100% 其他低于 10% 查询超时