views:

34

answers:

2

I have a list of tags that I would like to add to a url string, separated by commas ('%2C'). How can I do this ? I was trying :

>>> tags_list
['tag1', ' tag2']
>>> parse_string = "http://www.google.pl/search?q=%s&restofurl" % (lambda x: "%s," %x for x in tags_list)

but received a generator :

>>> parse_string
'http://&lt;generator object <genexpr> at 0x02751F58>'

Also do I need to change commas to %2C? I need it to feedpaarser to parse results. If yes - how can I insert those tags separated by this special sign ?


EDIT:

parse_string = ""
for x in tags_list:
    parse_string += "%s," % x

but can I escape this %2C ? Also I'm pretty sure there is a shorter 'lambda' way :)

+4  A: 
parse_string = ("http://www.google.pl/search?q=%s&amp;restofurl" % 
               '%2C'.join(tag.strip() for tag in tags_list))

Results in:

>>> parse_string = ("http://www.google.pl/search?q=%s&amp;restofurl" %
...                '%2C'.join(tag.strip() for tag in tags_list))
>>> parse_string
'http://www.google.pl/search?q=tag1%2Ctag2&amp;restofurl'

Side note:
Going forward I think you want to use format() for string interpolation, e.g.:

>>> parse_string = "http://www.google.pl/search?q={0}&amp;restofurl".format(
...                '%2C'.join(tag.strip() for tag in tags_list))
>>> parse_string
'http://www.google.pl/search?q=tag1%2Ctag2&amp;restofurl'
Adam Bernier
I love those python one-liners :)
owca
sometimes they're the only things getting me through the day
Adam Bernier
+1  A: 

"%s" is fine, but urlparse.urlunparse after urllib.urlencode is safer.

str.join is fine, but remember to check your tags for commas and number signs, or use urllib.quote on each one.

Tobias
so what would be the final solution ?
owca