我已经导出了一堆Gmail消息,并希望使用Python解析它们并获得洞察力。然而,在导出时,我意识到在这些mbox文件中有一个奇怪的编码,例如字符'é‘被转换为=E9
,引号符号(“和”)被转换为=E2=80=9C
和=E2=80=9D
。我的电子邮件经常有很多外国文字,因此将这些文件解码为utf-8对我来说非常重要。此外,我也经常有表情符号的信息,这些表情符号也传达了我需要保存的重要情感信息。
我发现这种编码被称为Quoted Printable,并且我尝试使用quopri
Python模块,但是没有成功。
以下是我的简化代码:
import os
import quopri
from pathlib import Path
for filename in os.listdir(directory):
if filename.endswith(".mbox"):
input_filename = Path(os.path.join(directory,filename))
output_filename = Path(os.path.join(directory,filename+'_utf-8'))
with open(input_filename, 'rb'):
quopri.decode(input_filename, output_filename)
但是,在运行此命令时,我在最后一行得到以下错误:AttributeError: 'WindowsPath' object has no attribute 'read'
。我不明白为什么会出现这个错误,因为定义的路径指向文件。
发布于 2020-06-30 21:15:54
您需要为上下文管理器( with
语句)声明名称,如下所示:
with input_filename.open('rb') as infile, output_filename.open('wb') as outfile:
quopri.decode(infile, outfile)
https://stackoverflow.com/questions/62658124
复制相似问题