Python读取RTF文件时瑞典语特殊字符åäö显示异常的解决咨询
尝试读取包含瑞典语特殊字符“åäö”的RTF文件,打印字符串时出现\'e4(代替ä)这类转义序列,而非正确字符。现有代码及异常输出如下:
现有代码
infil = open("/Users/fabianlarsson/Downloads/textFil.rtf", 'r') print(infil.read()) infil.close()
异常输出
Skriv ett program som l'e4ser en textfil och producerar statistik. Du beh'f6ver sj'e4lv skapa en fil som programmet ska l'e4sa. Programmet ska skriva ut det totala antalet ord och antalet olika ord. Programmet ska ocks'e5 ge en lista p'e5 de'a0n'a0vanligaste orden och de'a0m'a0ovanligaste orden. V'e4rdena p'e5'a0m'a0och'a0n'a0ska l'e4sas in med'a0\cf4 input\cf2 . Se minilektionen in- och utmatning som beskriver hur man l'e4ser en fil.
期望输出
Skriv ett program som läser en textfil och producerar statistik. Du behöver själv skapa en fil som programmet ska läsa. Programmet ska skriva ut det totala antalet ord och antalet olika ord. Programmet ska också ge en lista på de n vanligaste orden och de m ovanligaste orden. Värdena på m och n ska läsas in med input. Se minilektionen in- och utmatning som beskriver hur man l'e4ser en fil.
快速解决方法:使用striprtf库解析RTF文件
RTF文件自带格式标记,直接读取会保留转义序列,用专门的RTF解析库可一键提取带正确特殊字符的纯文本,无需自行编写复杂的转义处理代码。
步骤1:安装解析库
打开终端执行以下命令:
pip install striprtf
步骤2:修改代码解析RTF
from striprtf.striprtf import rtf_to_text # 读取并解析RTF文件 with open("/Users/fabianlarsson/Downloads/textFil.rtf", 'r', encoding='utf-8') as infil: rtf_content = infil.read() plain_text = rtf_to_text(rtf_content) print(plain_text)
运行后即可输出包含正确瑞典语特殊字符的文本。
内容的提问来源于stack exchange,提问作者Fabian larsson

