将列表解析为url字符串

时间:2010-10-21 05:02:09

标签: python parsing url lambda url-parsing

我有一个标签列表,我想添加到url字符串,用逗号('%2C')分隔。我怎样才能做到这一点 ?我在努力:

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

但收到了一台发电机:

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

我是否还需要将逗号更改为%2C?我需要它来feedpaarser解析结果。如果是 - 我如何插入由此特殊符号分隔的标签?


编辑:

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

但是我可以逃避这个%2C吗?此外,我很确定有一种较短的'lambda'方式:)

2 个答案:

答案 0 :(得分:4)

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=%s&restofurl" %
...                '%2C'.join(tag.strip() for tag in tags_list))
>>> parse_string
'http://www.google.pl/search?q=tag1%2Ctag2&restofurl'

旁注:
展望未来我想你想用format()进行字符串插值,例如:

>>> 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'

答案 1 :(得分:1)

"%s"没问题,urlparse.urlunparse之后的urllib.urlencode更安全。

str.join很好,但请记得检查标记中的逗号和数字符号,或者在每个标记上使用urllib.quote