问题
so I have a data as follows:
item = '//s780.scene7.com/is/image/forever/301596014_001?hei=98&wid=98'
using urlparse module. how can i replace the above data with a new size to make it look like this:
item = '//s780.scene7.com/is/image/forever/301596014_001?hei=360&wid=360'
回答1:
Here is an answer which, as requested, uses 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)
回答2:
if hei and wid always equal one number ,so we have :
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)
hope it helps :)
回答3:
Is that what you want ?
item_360 = item.replace("=98","=360")
print item_360
'//s780.scene7.com/is/image/forever/301596014_001?hei=360&wid=360'
I put "=" to avoid replacing number before (if exist).
For more complex replacement you can have a look to regex
So, if you don't know 98
, you can use regex :
import re
item_360 = re.sub("=\d+", '=360', item)
来源:https://stackoverflow.com/questions/26221669/how-do-i-replace-a-query-with-a-new-value-in-urlparse