python从电子邮件线程中提取列表匹配

2024-10-02 06:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python不熟悉。我需要检索匹配的列表

例如,我的文本下面是一封电子邮件。 我需要提取所有到,从,发送,主题和正文从邮件线程。你知道吗

结果需要从列表中删除

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

致(1)=克兰德尔,肖恩;巴德尔,罗伯特 至(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."

Tags: andthetofrommessage主题列表language
2条回答

如果您不知道如何使用regex,而且您的问题也不是那么棘手,那么您可以考虑使用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()方法。你知道吗

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

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

将返回一个From名称的列表(['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')]

相关问题 更多 >

    热门问题