如何在 .msg 文件的正文中获取 table

How to get a table inside body of .msg file

我想获取一个 table,它位于一个带有 Python 的 .msg 文件的正文中。我可以获得正文内容,但我需要将 table 分隔到数据帧中,例如。

我可以获取正文内容,但无法分离正文的table

import win32com.client
import os

dir = r"C:\Users\Murilo\Desktop\Emails0"

file_list = os.listdir(dir)

for file in file_list:
    if file.endswith(".msg"):
        outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
        msg = outlook.OpenSharedItem(dir + "/" + file)
        print(msg.Body)

我需要正文内容中存在的table,但不是所有正文

我会看看 extract_msg 图书馆。它应该允许您以 XML 格式打开 .msg 文件,并且很容易从内容中提取 table。

msg = extract_msg.Message(fileLoc)
    msg_message = msg.body

    content = ('Body: {}'.format(msg_message))

如果是 HTML table,请使用 MailItem.HTMLBody(而不是纯文本 Body)并从 [=14] 中提取 table =].

Outlook 对象模型提供了三种处理项目正文的主要方式:

  1. Body.
  2. HTMLBody.
  3. Word 编辑器。 Inspector WordEditor 属性 class returns 表示消息正文的Word 文档实例。因此,您可以使用 Word 对象模型对邮件正文做任何您需要的事情。 Document 的 Copy 和 Paste 方法可以解决问题。

有关详细信息,请参阅 Chapter 17: Working with Item Bodies

但我认为最简单、最干净的方法是使用 Word 对象模型。您可以阅读更多如何处理 Word 对象模型以及如何使用它来提取 How to read contents of an Table in MS-Word file Using Python? post.

中的 table 内容