【问题标题】:python to extract list match from email threadpython从电子邮件线程中提取列表匹配
【发布时间】:2017-01-03 21:58:55
【问题描述】:

我是 python 新手。我需要检索匹配列表

例如,我的文字在下面,这是一封电子邮件。 我需要从邮件线程中提取所有 To、From、Sent、Subject 和 body。

结果需要来自列表

From(1) = 克兰德尔,肖恩 From(2) = 内特尔顿,马库斯

To(1)= 克兰德尔,肖恩;巴德,罗伯特 To(2)= 梅雷迪思,凯文

喜欢上面的发送,主题等

"-----Original Message-----
From:   Crandall, Sean  
Sent:   Wednesday, May 23, 2001 2:56 PM
To: Meredith, Kevin
Subject:    RE: Spreads and Product long desc.

Kevin,

Is the SP and NP language in the spread language the same language we use when we transact SP15 or NP15 on eol?

 -----Original Message-----
From:   Meredith, Kevin  
Sent:   Wednesday, May 23, 2001 11:16 AM
To: Crandall, Sean; Badeer, Robert
Subject:    FW: Spreads and Product long desc."

【问题讨论】:

  • 向我们展示您的尝试?

标签: python regex match


【解决方案1】:

您可以为此使用re.findall(),请参阅:https://docs.python.org/2/library/re.html#re.findall。例如

re.findall("From:   (.*)  ", input_string);

将返回 From-names (['Crandall, Sean', 'Meredith, Kevin']) 的列表,假设它总是相同数量的空格。

如果你想变得花哨,你可以在同一个表达式中进行多次搜索:例如

re.findall("From:   (.*)  \nSent:   (.*)", input_string);

会返回[('Crandall, Sean', 'Wednesday, May 23, 2001 2:56 PM'), ('Meredith, Kevin', 'Wednesday, May 23, 2001 11:16 AM')]

【讨论】:

    【解决方案2】:

    如果您不知道如何使用正则表达式并且您的问题不是那么棘手,您可以考虑使用split()replace() 函数。

    这里有几行代码可能是一个好的开始:

    mails = """-----Original Message-----
    From:   Crandall, Sean  
    Sent:   Wednesday, May 23, 2001 2:56 PM
    To: Meredith, Kevin
    Subject:    RE: Spreads and Product long desc.
    
    Kevin,
    
    Is the SP and NP language in the spread language the same language we use when we transact SP15 or NP15 on eol?
    
     -----Original Message-----
    From:   Meredith, Kevin  
    Sent:   Wednesday, May 23, 2001 11:16 AM
    To: Crandall, Sean; Badeer, Robert
    Subject:    FW: Spreads and Product long desc."""
    
    mails_list = mails.split("-----Original Message-----\n")
    mails_from = []
    mails_sent = []
    mails_to = []
    mails_subject = []
    mails_body = []
    
    for mail in mails_list:
        if not mail:
            continue
        inter = mail.split("From:   ")[1].split("\nSent:   ")
        mails_from.append(inter[0])
        inter = inter[1].split("\nTo: ")
        mails_sent.append(inter[0])
        inter = inter[1].split("\nSubject:    ")
        mails_to.append(inter[0])
        inter = inter[1].split("\n")
        mails_subject.append(inter[0])
        mails_body.append(inter[0])
    

    看看这如何只使用真正的基本概念。

    您可能需要考虑以下几点:

    • 请自行尝试,您可能需要进行一些调整。
    • 用那个方法,解析方法比较难,邮件的格式一定要非常准确。
    • 您可能想要删除一些空间,例如使用replace() 方法。

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多