मैं पाइथन में एक यूआरएल को सामान्य करने के लिए लाइब्रेरी फ़ंक्शन खोज रहा हूं, जो पथ में "./" या "../" भागों को निकालना है, या एक डिफ़ॉल्ट पोर्ट जोड़ें या विशेष वर्णों से बचें और इसी तरह। नतीजा एक स्ट्रिंग होना चाहिए जो एक ही वेब पेज पर इंगित दो यूआरएल के लिए अद्वितीय है। उदाहरण के लिए http://google.com
और http://google.com:80/a/../
एक ही परिणाम लौटाएंगे।URL को कैनोनिकल/सामान्यीकृत करें?
मैं पाइथन 3 पसंद करूंगा और पहले ही urllib
मॉड्यूल को देख सकता हूं। यह यूआरएल को विभाजित करने के लिए कार्यों की पेशकश करता है लेकिन उन्हें canonicalize करने के लिए कुछ भी नहीं। जावा में URI.normalize()
फ़ंक्शन है जो एक समान चीज करता है (हालांकि यह किसी दिए गए बंदरगाह के बराबर डिफ़ॉल्ट पोर्ट 80 पर विचार नहीं करता है), लेकिन क्या ऐसा कुछ है जो पाइथन है?
एक तरफ ध्यान दें, इस तरह के रूप में एक संसाधन के रूप में 'http: // google.com /' 'http से समान नहीं है: // गूगल .com: 80/एक /../ '। यही है, अगर '/ a' मौजूद नहीं है, तो दूसरा पथ विफल हो जाएगा। इसे "कैनोलिकलाइजिंग" करके, आप उस विशेष मामले को खो देते हैं और एक वैध यूआरआई के साथ समाप्त होते हैं जब आपने अमान्य एक के साथ शुरू किया ... –