2013-03-06 48 views
-4

我開發和應用收穫任何類型的文件,從電子郵件 類型:[email protected] ishani(AT),在CS點dit.dolly.lk ishani小車點edu電子郵件收穫與Python

但輸出的問題會顯示除提取的完整電子郵件以外的列表中的一些額外項目。我發現爲什麼是這樣。我在各種ways.I試圖認爲這是在我的正則表達式的問題或邏輯

這裏是我的代碼

data=f.read() 

    regexp_email = r'(([\w]+)@([\w]+)([.])([\w]+[\w.]+))|(([\w]+)(\(at\))([\w]+)([.])([\w]+[\w.]+))|(([\w]+)(\sat\s)([\w-]+)(\sdot\s)([\w]+(\sdot\s[\w]+)))' 
    pattern = re.compile(regexp_email) 
    emailAddresses = re.findall(pattern, data) 

    print emailAddresses 

輸出是這樣

[('[email protected]', 'ishani', 'sliit', '.', 'lk', '', '', '', '', '', '', '', '', '', '', '', '', ''), ('', '', '', '', '', 'ishani(at)dit.sliit.lk', 'ishani', '(at)', 'dit', '.', 'sliit.lk', '', '', '', '', '', '', ''), ('', '', '', '', '', '', '', '', '', '', '', 'ishani at cs dot dolly dot edu', 'ishani', ' at ', 'cs', ' dot ', 'dolly dot edu', ' dot edu')] 

但是我期待像這樣的輸出

['[email protected]','ishani(at)dit.dolly.lk','ishani at cs dot dolly dot edu'] 

是否有任何人試過的方法支持我的問題?

回答

0

regexp_email改成這樣:

r'[\w][email protected][\w]+[.][\w]+[\w.]+|[\w]+\(at\)[\w]+[.][\w]+[\w.]+|[\w]+\sat\s[\w-]+\sdot\s[\w]+\sdot\s[\w]+' 

它似乎並不需要捕獲組,所以我已經刪除了所有這些組。

你也不必如果[]周圍\w\w是所有你需要指定:

r'\[email protected]\w+[.]\w+[\w.]+|\w+\(at\)\w+[.]\w+[\w.]+|\w+\sat\s[\w-]+\sdot\s\w+\sdot\s\w+' 
+0

在您的解決方案中,它將字符逐個分割。但我預計整個電子郵件地址列表中的一個元素 像這樣 ['[email protected]','ishani(at)dit.dolly.lk','ishani at cs dot dolly dot edu'] – Ishani702 2013-03-06 17:23:08

+0

@ Ishani702:它做你想做的。你在說什麼? – nhahtdh 2013-03-06 17:25:07

+0

您的結果如下所示 ['n','u','w','a','n','','s','l','i','i','t '','l','k','n','u','w','a','n','(','a','t',')', 'd','i','t','。','s','l','i','i','t','。','l','k','n ''''','w','a','n','','a','t','','c','s','','d','o' ,'t','','s','l','i','i','t','','d','o','t','','e', 'd','u'] 我期待的是這樣的 ['[email protected]','ishani(at)dit.dolly.lk','ishani at cs dot dolly dot edu'] – Ishani702 2013-03-06 17:30:02

-1

你可以只跳過空格

print [e for ea in emailAddresses for e in ea if e] 

產生

['[email protected]', 'ishani', 'sliit', '.', 'lk', 'ishani(at)dit.sliit.lk', 'ishani', '(at)', 'dit', '.', 'sliit.lk', 'ishani at cs dot dolly dot edu', 'ishani', ' at ', 'cs', ' dot ', 'dolly dot edu', ' dot edu'] 

這是不準確問什麼...

+0

是否有其他的方法來提取那種比我的方式與其他電子郵件...? – Ishani702 2013-03-06 17:17:31