Как получить таблицу внутри тела .msg файла - PullRequest
0 голосов
/ 02 июля 2019

Я хочу получить одну таблицу, которая находится внутри тела одного MSG-файла с Python. Я могу получить содержимое тела, но мне нужно разделить таблицу, например, на фрейм данных.

Я могу получить содержимое тела, но не могу разделить таблицу тела

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 голосов
/ 02 июля 2019

Если это таблица HTML, используйте MailItem.HTMLBody (вместо простого текста Body) и извлеките таблицу из HTML.

0 голосов
/ 03 июля 2019

Объектная модель Outlook предоставляет три основных способа работы с телами элементов:

  1. Body .
  2. HTMLBody .
  3. Редактор Word. Свойство WordEditor класса Inspector возвращает экземпляр документа Word, который представляет тело сообщения. Итак, вы можете использовать объектную модель Word и делать все, что вам нужно, с телом сообщения . Методы копирования и вставки документа помогут.

См. Глава 17: Работа с телами предметов для получения дополнительной информации.

Но я думаю, что самый простой и чистый способ - использовать объектную модель Word. Вы можете прочитать больше о том, как обращаться с объектной моделью Word и как использовать ее для извлечения содержимого таблицы, в Как читать содержимое таблицы в файле MS-Word с помощью Python? post.

0 голосов
/ 02 июля 2019

Я бы посмотрел библиотеку extract_msg. Это должно позволить вам открыть файл .msg в виде простого XML и очень легко извлечь таблицу из содержимого.

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

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