Search code examples
pythonhtmlregexstringemail-validation

Python: Convert email address to HTML link


I'm looking for a stand-alone python function that will take in a string and return a string with the email addresses converted to links.

Example:

>>>s = 'blah blah blah [email protected] blah blah blah'
>>>link(s)
'blah blah blah <a href="mailto:[email protected]">[email protected]</a> blah blah blah'

Solution

  • Something like this?

    import re
    import xml.sax.saxutils
    
    def anchor_from_email_address_match(match):
        address = match.group(0)
        return "<a href=%s>%s</a>" % (
            xml.sax.saxutils.quoteattr("mailto:" + address),
            xml.sax.saxutils.escape(address))
    
    def replace_email_addresses_with_anchors(text):
        return re.sub("\w+@(?:\w|\.)+", anchor_from_email_address_match, text)
    
    print replace_email_addresses_with_anchors(
        "An address: [email protected], and another: [email protected]")