2013-03-06 50 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