所以我创建了一个方法去除电子邮件页面的html,样式/脚本标签和新行标签的源代码:
def extract_message(url):
markup = open(url)
soup = BeautifulSoup(markup, "html.parser")
for script in soup(["script", "style"]): script.extract()
text = soup.get_text()
text_clean = re.sub(r"\n", " ", text)
text_clean_more = text_clean.replace(u'\xa0', u' ')
a = text_clean_more.find('From:')
print (text_clean[a:])
然后,我从电子邮件中的“发件人:”实例返回所有内容,一直到电子邮件的结尾。然而,在经历了这个过程之后,我得到了一个非常分散的整体文字通道,例如:
我的目标是打印出干净的文字段落。无论如何我能做到这一点吗?我已经用这几个小时震撼了我的大脑,并且根本没有提出任何理性的东西。只是想朝着正确的方向努力,谢谢。
答案 0 :(得分:1)
使用模块email
提取邮件正文,而不是手动将它们分开。使用模块textwrap
将消息文本格式化为漂亮的段落。这可能会奏效:
paras = rawtext.split("\n\n") # Split into paragraphs, if any
formatted = "\n\n".join(textwrap.fill(p) for p in paras)
但请查看textwrap documentation您可以指定的关键字选项。
答案 1 :(得分:0)
正则表达式 - 剥离空格但保留新行(或CRLF)