2010-10-21 49 views
1

我有一個標籤列表,我想添加到一個url字符串,用逗號分隔('%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?我需要它來feedpaarser解析結果。如果是的話 - 我如何插入由這個特殊符號分開的標籤?


編輯:

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

但我可以逃脫這個%2C?此外,我敢肯定有一個較短的「拉姆達」的方式:)

回答

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

我喜歡那些python one-liners :) – owca 2010-10-21 05:20:38

+2

有時他們是唯一讓我度過一天的日子 – bernie 2010-10-21 06:04:12

1

"%s"是好的,但urlparse.urlunparseurllib.urlencode後是安全的。

str.join是好的,但請記住檢查您的標籤的逗號和數字符號,或每個使用urllib.quote

+0

那麼最終的解決方案是什麼? – owca 2010-10-21 11:21:20