2016-08-27 59 views
0

我是新來的python。我需要檢索匹配列表python從電子郵件線程中提取列表匹配

例如,我的文本下方是電子郵件。 我需要從郵件線索中提取所有收件人,發件人,發件人,主題和正文。

結果需要從列表

由式(1)=克蘭德爾,肖恩 由式(2)= Nettelton,馬庫斯

向(1)=克蘭德爾,肖恩; Badeer,羅伯特 (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." 
+1

告訴我們你試過了什麼? – anubhava

回答

1

您可以使用re.findall()爲此,請參閱:https://docs.python.org/2/library/re.html#re.findall。例如。

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

將返回從 - 名(['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')]

1

如果你不知道如何使用正則表達式和你的問題不在於硬朗,你可以考慮使用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()方法。
+0

這是解決我的問題。謝謝 – newjenn