import re import urlparse def parsename(fullname): parts = re.search("(?P[^\(]*)(\((?P\S+)\))*", fullname) if parts: parts = parts.groupdict() if parts['uri'] and parts['name']: parts['name'] = parts['name'].strip() urlparts = urlparse.urlparse(parts['uri']) if not urlparts[0]: if urlparts[2].find("@") > 0: urlparts = list(urlparts) urlparts[0] = "mailto" else: return {} parts['uri'] = urlparse.urlunparse(urlparts) return parts return {} def safeparsename(fullname): parts = parsename(fullname) if not parts: parts = {'uri': '', 'name': 'anonymous'} return parts