Python调用Textatistic报_io.TextIOWrapper无replace属性如何解决
报错根因
Textatistic构造函数要求传入字符串类型的待分析文本,你当前传入的是open()返回的文件操作对象(类型为_io.TextIOWrapper)。该对象是文件句柄,不是实际文本内容,内部没有字符串专属的replace()方法,因此触发属性报错。
修正方案
先读取文件内的文本内容转为字符串,再传入Textatistic即可。推荐使用with上下文管理器打开文件,自动处理文件资源释放,避免句柄泄漏。
修正后的可运行代码:
from textatistic import Textatistic # 打开文件并指定编码,避免跨系统乱码 with open("/Users/jchavis/Desktop/Data/posts.txt", "r", encoding="utf-8") as file_handler: # 读取文件全部内容为字符串 text_content = file_handler.read() readability_scores = Textatistic(text_content).scores flesch_score = readability_scores['flesch_score'] print('The Flesch Reading Ease is %.2f' % flesch_score)
补充说明
- 打开文件时建议显式传入
encoding参数,不同操作系统默认文件编码存在差异,不显式指定很容易出现中文解码失败、乱码问题 - 所有面向纯文本内容的分析库,入参基本都要求是字符串格式,不要直接传入文件对象、路径字符串(除非库文档明确说明支持传入文件路径)
- 如果待分析的文本文件体积过大,不要直接用
read()一次性加载全部内容到内存,可以按段落拆分读取后分批计算,再做加权平均得到整体可读性得分
内容的提问来源于stack exchange,提问作者JC91
相关产品推荐
相关产品推荐

