2014-10-06 28 views
0

所以我有一個數據如下:如何用urlparse中的新值替換查詢?

item = '//s780.scene7.com/is/image/forever/301596014_001?hei=98&wid=98' 

使用模塊裏urlparse。我如何可以用一個新的大小替換上述數據,使其看起來像這樣:

item = '//s780.scene7.com/is/image/forever/301596014_001?hei=360&wid=360' 

回答

0

這是根據請求使用urlparse的一個答案:

import urllib 
import urlparse 

url = '//s780.scene7.com/is/image/forever/301596014_001?hei=98&wid=98' 
parts = urlparse.urlparse(url) 
query_dict = urlparse.parse_qs(parts.query) # {'wid': ['98'], 'hei': ['98']} 
query_dict['wid'] = '360' 
query_dict['hei'] = '360' 
new_parts = list(parts) 
new_parts[4] = urllib.urlencode(query_dict) 
print urlparse.urlunparse(new_parts) 
+0

hm ....我得到這個值//s780.scene7.com/is/image/forever/301596014_001;wid=360&hei=240?hei=98&wid=98我如何在這裏擺脫這部分hei = 98&wid = 98 – slopeofhope 2014-10-06 18:20:05

+0

好吧它是new_parts [4]謝謝~~ – slopeofhope 2014-10-06 18:28:14

+0

new_parts [4] = urllib.urlencode(query_dict) – 2014-10-06 18:28:19

0

這就是你想要的?

item_360 = item.replace("=98","=360") 
print item_360 
'//s780.scene7.com/is/image/forever/301596014_001?hei=360&wid=360' 

我把「=」,以避免更換號碼之前(如果存在)。

對於更復雜的更換,你可以看看到regex

所以,如果你不知道98,您可以使用正則表達式:

import re 
item_360 = re.sub("=\d+", '=360', item) 
+0

也許我們不知道url中的當前數字是多少! – 2014-10-06 18:02:43

0

如果喜和WID總是等於一個數,所以,我們有:

a = item[item.find('=')+1:item.find('&')] #this is the number in url (in your example it is 98 
item.replace(a, '360') #item.replace(a, NewNumber) 

希望它能幫助:)