我有一个标签列表,我想添加到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'方式:)
答案 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
。