【问题标题】:Trying to convert html to text in python?试图在python中将html转换为文本?
【发布时间】:2015-06-16 06:32:15
【问题描述】:

我正在用 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 电子邮件,您最好使用 html 解析器然后从中获取文本。

标签: python email tkinter imap imaplib


【解决方案1】:

大多数电子邮件都包含 html 版本和纯文本版本。对于这些电子邮件,您可以只使用纯文本位。对于只有 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()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2017-10-09
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多