2024-09-30 19:21:19 发布
网友
我有来自Outlook的电子邮件和姓名列表,以分号分隔,如下所示:
fname lname <email>; fname2 lname2 <email2>; ... ; fnameN lnameN <emailN>
我想提取电子邮件并用分号将它们分隔成这样:
如何在Python中实现这一点?在
特定主题的变体:
s = 'fname lname <email>; fname2 lname2 <email2>; ... ; fnameN lnameN <emailN>' print [ s[i+1 : i+s[i:].find('>')] for i,c in enumerate(s) if c == '<' ] # OR gen = ( i for i,c in enumerate(s) if c in '<>' ) print [ s[a+1:gen.next()] for a in gen]
Using regex:
import re # matches everything which is between < and > (excluding them) ptrn = re.compile("<([^>]+)>") # findall returns ['email','email2']. Join concats them. print '; '.join(ptrn.findall("fname lname <email>; fname2 lname2 <email2>;")) # email; email2
使用列表理解:
em = "fname lname <email>; fname2 lname2 <email2>; fnameN lnameN <emailN>" email_list = [entry.split()[-1][1:-1] for entry in em.split(';')] # email_list: # ['email', 'email2', 'emailN']
故障:
首先,它用分号分隔原始字符串。在
entry.split()
接下来,它获取每个条目,再次拆分它,这次是按空格。在
entry.split()[-1]
接下来,它从分割中选择最后一个条目,即您的电子邮件。在
entry.split()[-1][1:-1]
这将接收您的电子邮件,电子邮件格式为“<email@addr.com>”,并选择尖括号中包含的字符串([1:-1]对应于从第二个字符到最后一个字符的选择)。在
<email@addr.com>
特定主题的变体:
Using regex:
使用列表理解:
故障:
^{pr2}$首先,它用分号分隔原始字符串。在
接下来,它获取每个条目,再次拆分它,这次是按空格。在
接下来,它从分割中选择最后一个条目,即您的电子邮件。在
这将接收您的电子邮件,电子邮件格式为“
<email@addr.com>
”,并选择尖括号中包含的字符串([1:-1]对应于从第二个字符到最后一个字符的选择)。在相关问题 更多 >
编程相关推荐