用Python解析以逗号分隔的电子邮件列表,其格式为;名称“&书信电报;电子邮件>;

用Python解析以逗号分隔的电子邮件列表,其格式为;名称“&书信电报;电子邮件>;,python,regex,email,Python,Regex,Email,输入(逗号分隔列表): 我实际上可以使用逗号分割,然后使用,直到我意识到名称部分也可以包含逗号,就像上面的“Foo,Bar”一样 非常接近我需要的,但它接受一个序列,而不是逗号分隔的字符串。您可以使用以下命令 import re p = re.compile(r'"([^"]+)"(?:\s+<([^<>]+)>)?') test_str = '"Mr ABC" <mr@abc.com>, "Foo, Bar" <foo@bar.com>, "mr

输入(逗号分隔列表):

我实际上可以使用逗号分割,然后使用,直到我意识到名称部分也可以包含逗号,就像上面的“Foo,Bar”一样


非常接近我需要的,但它接受一个序列,而不是逗号分隔的字符串。

您可以使用以下命令

import re
p = re.compile(r'"([^"]+)"(?:\s+<([^<>]+)>)?')
test_str = '"Mr ABC" <mr@abc.com>, "Foo, Bar" <foo@bar.com>, "mr@xyz.com"'
print(re.findall(p, test_str))

您可以使用以下命令

import re
p = re.compile(r'"([^"]+)"(?:\s+<([^<>]+)>)?')
test_str = '"Mr ABC" <mr@abc.com>, "Foo, Bar" <foo@bar.com>, "mr@xyz.com"'
print(re.findall(p, test_str))

您可以使用以下命令

import re
p = re.compile(r'"([^"]+)"(?:\s+<([^<>]+)>)?')
test_str = '"Mr ABC" <mr@abc.com>, "Foo, Bar" <foo@bar.com>, "mr@xyz.com"'
print(re.findall(p, test_str))

您可以使用以下命令

import re
p = re.compile(r'"([^"]+)"(?:\s+<([^<>]+)>)?')
test_str = '"Mr ABC" <mr@abc.com>, "Foo, Bar" <foo@bar.com>, "mr@xyz.com"'
print(re.findall(p, test_str))


可以在
>处拆分,
可以在
>处拆分有用的头解析方法,
可以在
>处拆分有用的头解析方法,
可以在
>处拆分有用的头解析方法,
有一种有用的头解析方法,这是一个很好的解决方案,但我忘了提到,我们也可以使用电子邮件部分,如'mr@xyz.com'. 更新了问题。我已经更新了答案,请看。请注意,即使电子邮件部分不存在,元组仍将被创建,并且电子邮件将被捕获到组1中,因为它们不在
中。如果您的输出需要
[('Mr ABC','mr@abc.com","Foo,Bar",foo@bar.com'), ('', 'mr@xyz.com“)]
,您可以使用
lst=re.findall(p,test_str)//print([(tpl[1],第三方物流[0])如果不是第三方物流[1]否则第三方物流用于第三方物流(lst])
。这是一个很好的解决方案,但我忘了提到,我们也可以只使用电子邮件部分,如mr@xyz.com'. 更新了问题。我已经更新了答案,请看。请注意,即使电子邮件部分不存在,元组仍将被创建,并且电子邮件将被捕获到组1中,因为它们不在
中。如果您的输出需要
[('Mr ABC','mr@abc.com","Foo,Bar",foo@bar.com'), ('', 'mr@xyz.com“)]
,您可以使用
lst=re.findall(p,test_str)//print([(tpl[1],第三方物流[0])如果不是第三方物流[1]否则第三方物流用于第三方物流(lst])
。这是一个很好的解决方案,但我忘了提到,我们也可以只使用电子邮件部分,如mr@xyz.com'. 更新了问题。我已经更新了答案,请看。请注意,即使电子邮件部分不存在,元组仍将被创建,并且电子邮件将被捕获到组1中,因为它们不在
中。如果您的输出需要
[('Mr ABC','mr@abc.com","Foo,Bar",foo@bar.com'), ('', 'mr@xyz.com“)]
,您可以使用
lst=re.findall(p,test_str)//print([(tpl[1],第三方物流[0])如果不是第三方物流[1]否则第三方物流用于第三方物流(lst])
。这是一个很好的解决方案,但我忘了提到,我们也可以只使用电子邮件部分,如mr@xyz.com'. 更新了问题。我已经更新了答案,请看。请注意,即使电子邮件部分不存在,元组仍将被创建,并且电子邮件将被捕获到组1中,因为它们不在
中。如果您的输出需要
[('Mr ABC','mr@abc.com","Foo,Bar",foo@bar.com'), ('', 'mr@xyz.com“)]
,您可以使用
lst=re.findall(p,test_str)//print([(tpl[1],第三方物流[0]),如果不是第三方物流[1],则为第三方物流(lst中的第三方物流))