2011-10-12 36 views

Trả lời

2
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 

Rõ ràng ...

>>> 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']} 
>>> 
+0

Đã kết thúc trước khi tìm chuỗi truy vấn (' urlparse.urlparse (url) [4] ') và sau đó chỉ cần tách trên' & ', kiểm tra cho mỗi tham số nếu nó bắt đầu bằng "q2 =" và xóa nó khỏi chuỗi truy vấn. Gia nhập họ trở lại trên '&'. Đây cũng là thứ tự bảo quản, đó cũng là một yêu cầu đối với tôi. Chỉ muốn thêm vài xu 7+ năm sau. – YnkDK

37
#!/usr/bin/env python 

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)) 
+0

Câu trả lời này trả về url có chuỗi truy vấn bị xóa vì OP đã yêu cầu – KingFu

+0

Đây là câu trả lời đúng về mặt kỹ thuật duy nhất trong chuỗi này. – ekta

+3

Câu trả lời hay nhất. Ngoài ra, phương thức [geturl] (https://docs.python.org/2/library/urlparse.html#urlparse.ParseResult.geturl) của đối tượng urlparse có thể được sử dụng thay cho urlunparse 'print (u.geturl()) ' – tug

-2
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

bây giờ bạn có 2 vấn đề. –

11
import urlparse 

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

Sử dụng thư viện url thao tác python của furl:

import furl 
f = furl.furl("http://example.com/?a=text&q2=text2&q3=text3&q2=text4") 
f.remove(['q2']) 
print(f.url) 
Các vấn đề liên quan