मैं ऐसे ऐप पर काम कर रहा हूं जिसे HTML पृष्ठों में यूआरएल (ज्यादातर HTTP यूआरएल) का विश्लेषण करने की ज़रूरत है - मेरे पास इनपुट पर कोई नियंत्रण नहीं है और इसमें से कुछ उम्मीद है, थोड़ा गन्दापाइथन में यूआरएल पार्सिंग - पथों में डबल-स्लैश को सामान्य बनाना
testUrl = 'http://www.example.com//path?foo=bar'
urlparse.urljoin(testUrl,
urlparse.urlparse(testUrl).path)
:
एक समस्या यह है मैं अक्सर सामना कर रहा हूँ जब यह उदाहरण के लिए, पार्स करने और शामिल होने यूआरएल पथ भाग में है कि डबल स्लैश की बात आती है बहुत सख्त है कि urlparse है (और संभवतः भी छोटी गाड़ी?)
अपेक्षित परिणाम http://www.example.com//path
(या सामान्यीकृत एकल स्लैश के साथ भी बेहतर) के बजाय, मैं http://path
के साथ समाप्त होता हूं।
बीटीडब्ल्यू कारण मैं इस तरह का कोड चला रहा हूं क्योंकि यह एकमात्र तरीका है जिसे मैंने यूआरएल के क्वेरी/खंड भाग को बंद करने के लिए अभी तक पाया है। शायद ऐसा करने का एक बेहतर तरीका है, लेकिन मुझे एक नहीं मिला।
क्या कोई इस से बचने के लिए एक तरीका सुझा सकता है, या क्या मुझे केवल एक (अपेक्षाकृत सरल, मुझे पता है) regex का उपयोग करके पथ को सामान्य बनाना चाहिए?
आप "यह जानकारी/टुकड़ा हिस्सा पट्टी लिए एक ही रास्ता है" से क्या मतलब है? स्लैश को क्वेरी के साथ क्या करना है? – jknupp
इसमें क्वेरी के साथ कुछ लेना देना नहीं है - कारण मैं एक यूआरएल पार्स कर रहा हूं और उसके बाद अपने रास्ते में शामिल हो रहा हूं क्योंकि मैं क्वेरी और खंड को बाहर करना चाहता हूं। अगर ऐसा करने का बेहतर तरीका था, तो मुझे इस समस्या को हल करने की आवश्यकता नहीं होगी – shevron
मुझे लगता है कि urlparse सिर्फ यूआरएल के आरएफसी को सही ढंग से कार्यान्वित कर रहा है - जो निर्दिष्ट करता है कि: भाग केवल एक स्लैश (http: //tools.ietf.org/html/rfc1738) - तो आपके मामले में मैं urlparse को पास करने से पहले अतिरिक्त स्लैश को पट्टी करने की कोशिश करता हूं। –
BergmannF