如何使用Python从URL中删除查询字符串

2024-05-14 00:36:10 发布

您现在位置:Python中文网/ 问答频道 /正文

示例:

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

删除“q2”后,它将返回:

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

在本例中,存在多个“q2”,并且都已删除。


Tags: textcomhttp示例exampleq3q2本例
3条回答
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&b#q2=keep_fragment'
u = urlparse(url)
query = parse_qs(u.query, keep_blank_values=True)
query.pop('q2', None)
u = u._replace(query=urlencode(query, True))
print(urlunparse(u))

输出:

http://example.com/?a=text&q3=text3&b=#q2=keep_fragment
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']}
>>>

要删除所有查询字符串参数,请执行以下操作:

from urllib.parse import urljoin, urlparse

url = 'http://example.com/?a=text&q2=text2&q3=text3&q2=text4'
urljoin(url, urlparse(url).path)  # 'http://example.com/'

对于Python2,将导入替换为:

from urlparse import urljoin, urlparse

相关问题 更多 >