Parsing a list into a url string
I have a list of tags that I would like to add to a url string, separated by commas ('开发者_如何学C%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://<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 :)
parse_string = ("http://www.google.pl/search?q=%s&restofurl" %
'%2C'.join(tag.strip() for tag in tags_list))
Results in:
>>> parse_string = ("http://www.google.pl/search?q=%s&restofurl" %
... '%2C'.join(tag.strip() for tag in tags_list))
>>> parse_string
'http://www.google.pl/search?q=tag1%2Ctag2&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}&restofurl".format(
... '%2C'.join(tag.strip() for tag in tags_list))
>>> parse_string
'http://www.google.pl/search?q=tag1%2Ctag2&restofurl'
"%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.
精彩评论