我有一个想添加到commas('%2C')的URL字符串中的标签列表。我怎样才能做到这一点 ?我正在尝试:

>>> 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?我需要它来喂食以解析结果。如果是 - 如何插入由这个特殊标志隔开的那些标签?


编辑:

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

但是我可以逃脱 %2C ?我也很确定有一种较短的“ lambda”方式:)

有帮助吗?

解决方案

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'

其他提示

"%s" 很好,但是 urlparse.urlunparseurllib.urlencode 更安全。

str.join 很好,但是请记住检查您的标签是否逗号和数字标志,或使用 urllib.quote 在每个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top