2011-12-18 104 views
1

我使用get_payload()方法獲得了有效載荷作爲字符串實例。但我希望我的有效載荷能夠以我能夠逐字訪問的方式運行 我嘗試了幾種方法,如as_string() method, flatten() method, get_charset() method,但每次都有問題。字符串格式的電子郵件的有效載荷,python

我用下面的代碼

import email 
from email import * 
f=open('mail.txt','r') 
obj=email.parser.Parser() 
fp=obj.parse(f) 
payload=fp.get_payload() 
+1

你沒有提到你實際上有什麼問題 – jdi 2011-12-18 18:13:01

+0

兩次導入是沒用的。你應該刪除第二行。 – rubik 2011-12-18 18:19:13

+0

非常感謝,其實我是新的這種語言 我需要的是獲得一個列表,以便我可以訪問該列表中的每個單詞 – Puneet 2011-12-18 18:27:48

回答

1

與一對夫婦我自己生的電子郵件只是測試你的代碼段有我的有效載荷。做工精細...

get_payload()返回無論是列表或字符串,所以你需要檢查第一

if isinstance(payload, list): 
    for m in payload: 
     print str(m).split() 

else: 
    print str(m).split() 

編輯

根據我們的討論,您的問題是,你是不檢查fp對象上的is_multipart(),實際上它是一個消息實例。如果fp.is_multipart()== True,那麼get_payload()將返回一個消息實例列表。在你的情況,根據你的榜樣郵件,這不是多部分,和FP竟是你在有趣的對象。

+0

只有else循環正在工作, ,當我嘗試將其更改爲字符串時,它表示有效負載是消息實例 – Puneet 2011-12-18 18:28:34

+0

@puneet - 更新了我的答案。對於消息實例,您可以調用get_payload()來獲取正文內容。 – jdi 2011-12-18 18:45:21

+0

是的,它工作後用「對象」替換「列表」,但我仍然無法讓單詞分離,現在它顯示我在不同的行中的每個字符與以下代碼 ifinstance(payload,object): for米有效載荷: print str(m) – Puneet 2011-12-18 19:00:22

0

我得到了我的有效載荷爲一個字符串作爲我的FP不是多部分 如果它可能已被一多,它會返回的字符串 的列表,以便現在就可以使用下面的代碼

payload=fp.get_payload() 
abc=payload.split(" ") 

它給我的輸出如下 [「好」,「天\ nhttp://72.167。 116.186/image/bdfedx.php?iqunin = 3D41 \ n \ n','','','','','','','','','','','','','' 'Sun','18','Dec','2011','10:53:43 \ n_ _ __ _ __ _ __ _ __ _ __ _ \ n「她 ' '消滅', '他', '幹', '有', '軟',' 絨布,''''和','給'''他','一些','乾淨','幹','衣服,='n','和','製造','他','非常','('),'Lyrica','wa946758 \ n']

感謝jdi :) ps由於存在一些限制,因此無法將其作爲昨天的答案

相關問題