尝试将 html 转换为 python 中的文本?

Trying to convert html to text in python?

我正在 python 中编写电子邮件应用程序。目前,当我尝试使用 html 显示任何电子邮件时,它只显示 html 文本。有没有一种简单的方法可以将电子邮件字符串转换为纯文本以供查看?

我代码的相关部分:

rsp, data = self.s.uid('fetch', msg_id, '(BODY.PEEK[HEADER])')
raw_header = data[0][1].decode('utf-8')
rsp, data = self.s.uid('fetch', msg_id, '(BODY.PEEK[TEXT])')
raw_body = data[0][1].decode('utf-8')

header_ = email.message_from_string(raw_header)
body_ = email.message_from_string(raw_body)
self.message_box.insert(END, header_)
self.message_box.insert(END, body_)

消息框只是一个显示电子邮件的 tkinter 文本小部件

谢谢

大多数电子邮件都包含 html 版本和 plain/text 版本。对于这些电子邮件,您只需使用 plain/text 位即可。对于只有 html 版本的电子邮件,您必须使用像 BeautifulSoup 这样的 html 解析器来获取文本。

像这样:

message = email.message_from_string(raw_body)

plain_text_body = ''
if message.is_multipart():
    for part in message.walk():       
        if part.get_content_type() == "text/plain":
            plain_text_body = part.get_payload(decode=True)
            break

if plain_text_body == '':
    plain_text_body = BeautifulSoup(message.as_string()).get_text()

注意:我还没有实际测试过我的代码,所以它可能无法按原样运行。