Question about parsing a string

Fredrik Lundh fredrik at pythonware.com
Mon Oct 10 04:20:23 EDT 2005


Nico Grubert wrote:

> I would like to parse a string in Python.
>
> If the string is e.g. '[url=http://www.whatever.org][/url]' I would like
> to generate this string:
> '<a href="http://www.whatever.org">http://www.whatever.org</a>'
>
> If the string is e.g. '[url=http://www.whatever.org]My link[/url]' I
> would like to generate this string:
> '<a href="http://www.whatever.org">My link</a>'
>
> Any idea how I can do this? Maybe with regular expressions?

here's one way to do it:

import re, cgi

def fixurl(text):
    def fixup(m):
        link, text = m.groups()
        text = text.strip() or link
        return "<a href='%s'>%s</a>" % (cgi.escape(link), cgi.escape(text))
    return re.sub(r"\[url=([^]]+)\]([^[]*)\[/url\]", fixup, text)

usage:

>>> fixurl("[url=http://www.whatever.org][/url]")
"<a href='http://www.whatever.org'>http://www.whatever.org</a>"
>>> fixurl("[url=http://www.whatever.org]My link[/url]")
"<a href='http://www.whatever.org'>My link</a>"

</F>






More information about the Python-list mailing list