1
votes

Comment obtenir une table dans le corps du fichier .msg

Je veux obtenir une table qui se trouve dans le corps d'un fichier .msg avec Python. Je peux obtenir le contenu du corps, mais j'ai besoin de la table séparée en dataframe, par exemple.

Je peux obtenir le contenu du corps, mais je ne peux pas séparer la table du corps

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)


0 commentaires

3 Réponses :


0
votes

Je regarderais la bibliothèque extract_msg. Il devrait vous permettre d'ouvrir un fichier .msg en tant que XML brut et être très facile d'extraire une table du contenu.

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

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


0 commentaires

1
votes

S'il s'agit d'un tableau HTML, utilisez MailItem.HTMLBody (au lieu du texte brut Body ) et extrayez le tableau du HTML.


1 commentaires

Merci! Je l'ai utilisé et fonctionne parfaitement avec Pandas (read_html). Cela crée une liste de dataframes qui contient toutes les tables sur le corps de l'e-mail. Chaque élément de la liste est une trame de données d'une table sur le corps. données = pd.read_html (msg.HTMLBody)



0
votes

Le modèle d'objet Outlook propose trois méthodes principales pour travailler avec les corps d'élément:

  1. Body .
  2. HTMLBody .
  3. L'éditeur Word. La propriété WordEditor de La classe Inspector renvoie une instance du document Word qui représente le corps du message. Ainsi, vous pouvez utiliser le modèle d'objet Word pour faire tout ce dont vous avez besoin avec le corps du message . Les méthodes Copier et Coller du document feront l'affaire.

Voir Chapitre 17: Travailler avec Item Bodies pour plus d'informations.

Mais je pense que le moyen le plus simple et le plus propre est d'utiliser le modèle d'objet Word. Vous pouvez en savoir plus sur la gestion du modèle d'objet Word et sur son utilisation pour extraire le contenu de la table dans le Comment lire le contenu d'une table dans un fichier MS-Word en utilisant Python? post.


0 commentaires