>>> email.utils.getaddresses(['friend@email.com, John Smith ,"Smith, Jane" ']) [('', 'friend@email.com'), ('John Smith', 'john.smith@email.com'), ('Smith, Jane', 'jane.smith@uconn.edu')] from email.utils import getaddresses addrstring = ',friend@email.com, John Smith ,"Smith, Jane" ,' def addrparser(addrstring): addrlist = [''] quoted = False # ignore comma at beginning or end addrstring = addrstring.strip(',') for char in addrstring: if char == '"': # toggle quoted mode quoted = not quoted addrlist[-1] += char # a comma outside of quotes means a new address elif char == ',' and not quoted: addrlist.append('') # anything else is the next letter of the current address else: addrlist[-1] += char return getaddresses(addrlist) print addrparser(addrstring) [('', 'friend@email.com'), ('John Smith', 'john.smith@email.com'), ('Smith, Jane', 'jane.smith@uconn.edu')]