2012-04-07 49 views

回答

0

可以使用split多行分裂地址,strip以除去逗号和分号,和join重新排列它们。

>>> s = '[email protected]; [email protected]; test03#testing1.com; [email protected],' 
>>> print('\n'.join(m.strip(',;') for m in s.split()))) 
[email protected] 
[email protected] 
test03#testing1.com 
[email protected] 
+0

谢谢你这么多。我学会了。 – user1319102 2012-04-07 14:00:36

+0

查看链接,文档解释了许多重要的功能。顺便说一句,如果这个(或任何其他)答案解决了你的问题,请随时[accept](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)(并可能upvote)它。谢谢! – phihag 2012-04-07 14:21:23

+1

你必须小心。 ;,可以是电子邮件地址的本地部分(@之前的所有内容)的一部分。所以简单的分裂并不是防弹的。 – esskar 2012-04-25 10:01:31

0

如何使用正则表达式:

import re 
elist = re.findall(r'([^;,]+)', long_list) 
print "".join("\n", elist) 
+0

嗯,正则表达式不考虑空格和逗号。此外,还有一个语法错误 - 你错过了一个'''。另外,'str.join'除了'self'外只有一个参数。最重要的是,print不再是Python 3中的语句。 – phihag 2012-04-07 13:40:01

+0

白色空间是无关紧要的。海报想要捕捉地址。至于错字,这是固定的。 – user590028 2012-04-07 21:06:01

0

如果你只是想维护他们作为一个单一的多行字符串,一个简单的字符串替换将这样的伎俩:

long_list.replace('; ', '\n') 

更灵活的解决方案可以使用正则表达式:

import re 
re.sub(r'\s+;\s+', '\n')