Как удалить строку запроса из URL с помощью Python - PullRequest
11 голосов
/ 12 октября 2011

Пример:

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

После удаления « q2 » возвращается:

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

В этом случае было несколько « q2 », и все они были удалены.

Ответы [ 8 ]

58 голосов
/ 12 октября 2011
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))
17 голосов
/ 26 августа 2015
import urlparse

url = 'http://example.com/?a=text&q2=text2&q3=text3&q2=text4'
urlparse.urljoin(url, urlparse.urlparse(url).path)
11 голосов
/ 02 декабря 2016

Использование библиотеки манипулирования url в Python furl :

import furl
f = furl.furl("http://example.com/?a=text&q2=text2&q3=text3&q2=text4")
f.remove(['q2'])
print(f.url)
2 голосов
/ 06 февраля 2019

Разве это не вопрос разделения строки на символ?

>>> url = http://example.com/?a=text&q2=text2&q3=text3&q2=text4
>>> url = url.split('?')[0]
'http://example.com/'
2 голосов
/ 12 октября 2011
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

Явно ...

>>> 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']}
>>>
1 голос
/ 17 сентября 2018
query_string = "https://example.com/api/api.php?user=chris&auth=true"
url = query_string[:query_string.find('?', 0)]
0 голосов
/ 14 ноября 2018

Или, проще говоря, просто используйте url_query_cleaner() из 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)

Выход: http://example.com/?a=text&q3=text3

0 голосов
/ 12 октября 2011
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
...