Python读取RTF文件至937行报ASCII解码错误如何解决
问题根因
打开文件时未显式指定编码,当前Pythonista环境默认使用ASCII编码读取文件,当读取到第937行位置的0xe9字节(对应é字符,超出标准ASCII 0-127的编码范围)时,直接触发解码错误中断运行。
修复代码
直接替换原有代码即可,核心是显式指定兼容RTF文件的编码,增加错误兜底,同时用上下文管理器自动处理文件资源释放:
# 若打印出现乱码,可将encoding参数值替换为"utf-8"重试 with open("Steno Dictionary.rtf", "r", encoding="latin-1", errors="replace") as file: line_number = 1 for element in file: print(line_number) print(element) line_number += 1
参数说明
encoding="latin-1":该编码单字节覆盖0-255全部字符范围,完全兼容ASCII,不会出现字节无法解码的问题,适配绝大多数老式RTF文件的编码规则errors="replace":碰到异常无法识别的字节时,用�占位符替换,不会直接抛出错误打断整个读取流程with语句:无需手动调用file.close(),代码块执行结束后会自动关闭文件,避免资源泄漏
如果后续需要提取RTF内的纯文本内容而非原始带格式标签的内容,可以再引入专门的RTF解析库处理,上述代码已经可以实现逐行读取打印到文件末尾的需求。
内容的提问来源于stack exchange,提问作者Kiko314
相关产品推荐
相关产品推荐

