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

时间:2019-07-02 19:33:19

标签: python outlook msg

我想用Python获得一个表,该表位于一个.msg文件的正文中。我可以获取正文内容,但是例如需要将表分成数据框。

我可以获取身体的内容,但不能分离身体的桌子

import win32com.client
import os

dir = r"C:\Users\Murilo\Desktop\Emails\030"

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)

我需要包含在正文内容中的表,但不是所有正文

3 个答案:

答案 0 :(得分:0)

我会看一下extract_msg库。它应该允许您以纯XML格式打开.msg文件,并且非常容易从内容中提取表。

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

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

答案 1 :(得分:0)

如果它是HTML表,请使用MailItem.HTMLBody(而不是纯文本Body)并从HTML中提取表。

答案 2 :(得分:0)

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

  1. Body
  2. HTMLBody
  3. Word编辑器。 Inspector类的WordEditor属性返回一个Word Document实例,该实例代表消息正文。因此,您可以使用Word对象模型对邮件正文进行任何所需的操作。 Document的Copy和Paste方法可以解决问题。

有关更多信息,请参见Chapter 17: Working with Item Bodies

但是我认为最简单,最干净的方法是使用Word对象模型。您可以在How to read contents of an Table in MS-Word file Using Python?帖子中了解更多有关如何处理Word对象模型以及如何使用它来提取表内容的信息。