将列表解析为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
吗?我需要这样做是为了让feedparser解析结果。如果需要的话,我该怎么用这个特殊符号把标签分开呢?
补充:
parse_string = ""
for x in tags_list:
parse_string += "%s," % x
那我可以把这个%2C
转义吗?我还挺确定有更简短的'lambda'方法可以做到这一点 :)
2 个回答
1
使用 "%s"
是可以的,但在用 urllib.urlencode
之后用 urlparse.urlunparse
会更安全。
用 str.join
也没问题,但要记得检查你的标签里有没有逗号和井号,或者可以对每一个标签使用 urllib.quote
。
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'