2011-10-12 3 views
6

उदाहरण का उपयोग करते हुए यूआरएल से एक क्वेरी स्ट्रिंग को दूर कैसे करते हैं:मैं अजगर

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

को हटाने के बाद "q2", यह वापस आ जाएगी:

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

इस मामले में, एक से अधिक थे " q2 "और सभी को हटा दिया गया है।

धन्यवाद,

उत्तर

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 

स्पष्ट रूप से ...

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

से पहले क्वेरी स्ट्रिंग ('urlparse.urlparse (url) [4]') ढूंढने के बाद समाप्त हो गया और फिर बस' & 'पर जांच कर रहा है, जांच रहा है प्रत्येक पैरामीटर के लिए यदि यह "q2 =" से शुरू होता है और इसे क्वेरी स्ट्रिंग से हटा देता है। उन्हें '&' पर वापस शामिल करना। यह आदेश भी संरक्षित है, जो मेरे लिए भी एक आवश्यकता थी। बस 7+ साल बाद मेरे कुछ सेंट जोड़ना चाहता था। – 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

यह उत्तर क्वेरी स्ट्रिंग के साथ यूआरएल लौटाता है क्योंकि OP ने – KingFu

+0

अनुरोध किया है यह इस धागे में एकमात्र तकनीकी रूप से सही उत्तर है। – ekta

+3

बेस्ट उत्तर। एक अतिरिक्त, [geturl] (https://docs.python.org/2/library/urlparse.html#urlparse.ParseResult.geturl) urlparse ऑब्जेक्ट की विधि 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

अब आपके पास 2 समस्याएं हैं। –

11
import urlparse 

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

अजगर का यूआरएल हेरफेर पुस्तकालय का उपयोग करना मोड़ना:

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