将列表解析为URL字符串

1 投票
2 回答
516 浏览
提问于 2025-04-16 05:50

我有一串标签,想把它们加到一个网址字符串里,用逗号('%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'

撰写回答