How to remove a query string from a URL using Python

Example:

http://example.com/?a=text&q2=text2&q3=text3&q2=text4 

After removing " q2 " it will return:

 http://example.com/?q=text&q3=text3 

In this case there were several " q2 " and all were deleted.

+10
source share
8 answers
 import cgi import urlparse url = "http://example.com/?a=text&q2=text2&q3=text3&q2=text4" qs = cgi.parse_qs(urlparse.urlparse(url)[4]) del(qs['q2']) print qs 

Explicit ...

 >>> import cgi >>> import urlparse >>> url = "http://example.com/?a=text&q2=text2&q3=text3&q2=text4" >>> qs = cgi.parse_qs(urlparse.urlparse(url)[4]) >>> del(qs['q2']) >>> print qs {'a': ['text'], 'q3': ['text3']} >>> 
+2
source
 import sys if sys.version_info.major == 3: from urllib.parse import urlencode, urlparse, urlunparse, parse_qs else: from urllib import urlencode from urlparse import urlparse, urlunparse, parse_qs url = 'http://example.com/?a=text&q2=text2&q3=text3&q2=text4' u = urlparse(url) query = parse_qs(u.query) query.pop('q2', None) u = u._replace(query=urlencode(query, True)) print(urlunparse(u)) 
+53
source
 import urlparse url = 'http://example.com/?a=text&q2=text2&q3=text3&q2=text4' urlparse.urljoin(url, urlparse.urlparse(url).path) 
+17
source

Using python furl url management library:

 import furl f = furl.furl("http://example.com/?a=text&q2=text2&q3=text3&q2=text4") f.remove(['q2']) print(f.url) 
+9
source

Isn't that just a matter of splitting a string into a character?

 >>> url = http://example.com/?a=text&q2=text2&q3=text3&q2=text4 >>> url = url.split('?')[0] 'http://example.com/' 
+2
source
 query_string = "https://example.com/api/api.php?user=chris&auth=true" url = query_string[:query_string.find('?', 0)] 
+1
source

Or simply put, just use url_query_cleaner() from w3lib.url

 from w3lib.url import url_query_cleaner url = 'http://example.com/?a=text&q2=text2&q3=text3&q2=text4' url_query_cleaner(url, ('q2'), remove=True) 

Conclusion: http://example.com/?a=text&q3=text3

0
source
 import re q ="http://example.com/?a=text&q2=text2&q3=text3&q2=text4" todelete="q2" #Delete every query string matching the pattern r = re.sub(r''+todelete+'=[a-zA-Z_0-9]*\&*',r'',q) #Delete the possible trailing # r = re.sub(r'&$',r'',r) print r 
-3
source

Source: https://habr.com/ru/post/899087/


All Articles