简体   繁体   中英

Python:- Split email from list of emails (comma, space separated)

My input is

email_list = 

"mail1@mail.com,mail2@mail.com, mail3@mail.com mail4@mail.com 
mail5@mail.com"

Excepted output is

['mail1@mail.com', 'mail2@mail.com', 'mail3@mail.com', 'mail4@mail.com', 'mail5@mail.com']

I tried this method, but it will split only (,) separated. please let me know.

output = email_list.split(',') 

Thanks in advance...

You can use regular expression :

>>> import re
>>> email_list = "mail1@mail.com,mail2@mail.com, mail3@mail.com mail4@mail.com"
>>> re.split(r'[, ]*',email_list)
['mail1@mail.com', 'mail2@mail.com', 'mail3@mail.com', 'mail4@mail.com'] 

re.split split your string based on r'[, ]*' that split with any combine of comma ( , ) and space ( ).

Without regex,

>>> email_list = "mail1@mail.com,mail2@mail.com, mail3@mail.com mail4@mail.com"
>>> [i for x in email_list.split(',') if x for i in x.split(' ') if i]
['mail1@mail.com', 'mail2@mail.com', 'mail3@mail.com', 'mail4@mail.com']

Strangely - no one appears to have pointed possibly the most obvious and easiest...

>>> email_list = "mail1@mail.com,mail2@mail.com, mail3@mail.com mail4@mail.com"
>>> email_list.replace(',', ' ').split()
['mail1@mail.com', 'mail2@mail.com', 'mail3@mail.com', 'mail4@mail.com']

Also without regex :)

import re
email_list = "mail1@mail.com,mail2@mail.com, mail3@mail.com mail4@mail.com"
print filter(lambda x:x, sum([x.split(",") for x in email_list.split(" ")], []))

Try

email_list.replace(" ","")

Before you use

output = email_list.split(',') 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM