使用 BOM 格式化 Python 字符串

Format Python String with BOM

我有一个字符串(我认为)里面有 BOM,我想删除所有 BOM 而不会弄乱格式。

例如我的字符串如下所示:

>=20
> =EF=BB=BF
>=20
> -Jeff
>=20
> Begin forwarded message:
>=20

我希望它看起来像:

>
>
>
> -Jeff
>
> Begin forwarded message:
>

我同意留下 > 以指示缩进,我只是想删除杂散字符。如果我对消息进行解码,那么我会得到一个比我已有的字符串更丑陋且更难阅读的字符串。它有一堆 \r\n\r\n 从换行符开始,所以理想情况下我想只删除提到的东西而留下格式。

编辑 1: 以下是我是如何做到这一点的:

def getEmails():
    LOG.debug("Starting to get emails")
    conn = connectToMailServers()
    conn.select('inbox', readonly=True )
    result, data = conn.search(None, '(UNSEEN)')
    mail_ids = data[0]

    id_list = mail_ids.split()

    for _, i in enumerate(id_list):
        result, data = conn.fetch(str(int(i)), '(RFC822)' )
        for response_part in data:
            if isinstance(response_part, tuple):
                msg = email.message_from_bytes(response_part[1])
                getPlainText(msg)

def getPlainText(msg):
    for part in msg.walk():
        if part.get_content_type() == 'text/plain':
            LOG.debug(part.get_payload())
            return str(part.get_payload())

如果我打开解码 (part.get_payload(decode=True)) 然后我会遇到一个字符串问题,现在有一堆 \r\n\r\n 那么我如何在不解码的情况下执行此操作或者我如何重新格式化它转换为格式化字符串,删除换行符

明确告诉 str 转换器使用 UTF-8 有效,

str(getPlainText(msg), "utf-8")

给了我想要的预期结果。