[英]Unable to Parse Email in Python
我已經在E:/驅動器中存儲了一組.msg文件,我必須從中讀取和提取一些信息。 為此,我在Python 3.6中使用以下代碼。
from email.parser import Parser
with open("E:\Downloads\Test1.msg",encoding="ISO-8859-1") as fp:
headers = Parser().parse(fp)
print('To: %s' % headers['To'])
print('From: %s' % headers['From'])
print('Subject: %s' % headers['subject'])
在輸出中,我得到如下。
To: None
From: None
Subject: None
流程結束,退出代碼為0
我沒有在“收件人”,“從”和“主題”字段中獲得實際值。
有什么想法為什么不打印實際值?
我的示例.msg文件如下所示。
From: Bournemouth.wmt@gmail.com
To: Francis.dell@gmail.com
Subject: orderid: ord1234, circtid: cr1234
Charges:
Annual Charge - 10
Excess Charges - 5
我試圖從此消息中提取主題的訂單ID,電路ID和郵件正文中的費用。
輸出1:
謝謝
這是您在pastebin上為我們發布的文件的主體。
From: ratankumar.shivratri@TechM.com <ratankumar.shivratri@TechM.com>
Sent: Thursday, January 4, 2018 11:58 AM
To: Ratankumar Shivratri
Subject: Cct Id: ONE211, eCo order No: 1CTRP
Charges:
Annual rental - 2,125.00
Maintenance charge - 0.00
Regards
Ratan.
我已經可以使用以下代碼從標頭中獲取數據。
>>> from email.parser import Parser
>>> p = Parser()
>>> msg = p.parse(open('ratan.msg'))
>>> msg['To']
'Ratankumar Shivratri'
>>> msg['From']
'ratankumar.shivratri@TechM.com <ratankumar.shivratri@TechM.com>'
>>> msg['Subject']
'Cct Id: ONE211, eCo order No: 1CTRP\n '
這樣就行了。
我預見的下一個問題是,主題標題的格式似乎在消息中不一致。 例如,在您問題的消息中,主題標頭為“ orderid:ord1234,circtid:cr1234”,但在此消息中,其標題為“ Cct ID:ONE211,eCo訂單號:1CTRP”。 您希望能夠從消息中恢復“訂單ID,電路ID”,但這些項目不會出現在每條消息中。
如果他們這樣做了,您可能會用正則表達式將它們搜索出來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.