所以我有一個數據如下:如何用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'
所以我有一個數據如下:如何用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'
這是根據請求使用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)
這就是你想要的?
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)
也許我們不知道url中的當前數字是多少! – 2014-10-06 18:02:43
如果喜和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)
希望它能幫助:)
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
好吧它是new_parts [4]謝謝~~ – slopeofhope 2014-10-06 18:28:14
new_parts [4] = urllib.urlencode(query_dict) – 2014-10-06 18:28:19