আমার দুটি ইউআরএল রয়েছে:
url1 = "http://127.0.0.1/test1/test2/test3/test5.xml"
url2 = "../../test4/test6.xml"
আমি কীভাবে url2 এর জন্য পরম url পেতে পারি?
আমার দুটি ইউআরএল রয়েছে:
url1 = "http://127.0.0.1/test1/test2/test3/test5.xml"
url2 = "../../test4/test6.xml"
আমি কীভাবে url2 এর জন্য পরম url পেতে পারি?
উত্তর:
আপনার urlparse.urljoin ব্যবহার করা উচিত :
>>> import urlparse
>>> urlparse.urljoin(url1, url2)
'http://127.0.0.1/test1/test4/test6.xml'
পাইথন 3 (যেখানে urlparse এর নাম urllib.parse করা হয়েছে ) দিয়ে আপনি নিম্নলিখিত হিসাবে এটি ব্যবহার করতে পারেন :
>>> import urllib.parse
>>> urllib.parse.urljoin(url1, url2)
'http://127.0.0.1/test1/test4/test6.xml'
urljoin
3 বা মোডের পরামিতিগুলি ব্যবহার করি বা আপনি এর জন্য কোন লাইব্রেরিটি সুপারিশ করেন?
/
"রিসেট" করবে এবং স্কিমটি + নেটলোক + লাস্টারল রিটার্ন করবে:urlparse.urljoin('http://www.a.com/b/c/d', '/e') => 'http://www.a.com/e'
urljoin('http://www.a.com/', '../../b/c.png')
ফলাফল 'http://www.a.com/../../b/c.png'
, কিন্তু না http://www.a.com/b/c.png
। তো, কোন পদ্ধতি কি পাওয়ার আছে http://www.a.com/b/c.png
?
যদি আপনার আপেক্ষিক পথে একাধিক অংশ থাকে তবে আপনাকে পৃথকভাবে তাদের সাথে যোগ দিতে urljoin
হবে , যেহেতু আপেক্ষিক পাথটি প্রতিস্থাপন করবে, এতে যোগ দেবে না। এটি করার সবচেয়ে সহজ উপায় হ'ল ব্যবহার করা posixpath
।
>>> import urllib.parse
>>> import posixpath
>>> url1 = "http://127.0.0.1"
>>> url2 = "test1"
>>> url3 = "test2"
>>> url4 = "test3"
>>> url5 = "test5.xml"
>>> url_path = posixpath.join(url2, url3, url4, url5)
>>> urllib.parse.urljoin(url1, url_path)
'http://127.0.0.1/test1/test2/test3/test5.xml'
আরও দেখুন: আপনি যখন পাইথনে ইউআরএল তৈরি করছেন তখন কীভাবে কোনও পথের উপাদানগুলিতে যোগদান করবেন
es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml']
base = ''
map(lambda e: urlparse.urljoin(base, e), es)
reduce(lambda a, b: urlparse.urljoin(a, b), es)
একটি মানচিত্র list[n] - to -> list[n]
হ্রাস হ'লlist[n] - to -> a calculated value
>>> from urlparse import urljoin
>>> url1 = "http://www.youtube.com/user/khanacademy"
>>> url2 = "/user/khanacademy"
>>> urljoin(url1, url2)
'http://www.youtube.com/user/khanacademy'
সরল।
আপনি reduce
ক্লিনার ফ্যাশনে শিখরের পদ্ধতি অর্জন করতে ব্যবহার করতে পারেন ।
>>> import urllib.parse
>>> from functools import reduce
>>> reduce(urllib.parse.urljoin, ["http://moc.com/", "path1/", "path2/", "path3/"])
'http://moc.com/path1/path2/path3/'
নোট করুন যে এই পদ্ধতিটি সহ, প্রতিটি খণ্ডের অগ্রবর্তী-স্ল্যাশের পিছনে পিছনে থাকা উচিত, কোনও শীর্ষস্থানীয় ফরোয়ার্ড-স্ল্যাশ ছাড়াই (এটি চিহ্নিত করার জন্য যে এটি কোনও পথের খণ্ডটি যুক্ত হচ্ছে)। এটি আরও সঠিক / তথ্যবহুল, আপনাকে বলছে যে path1/
এটি একটি ইউআরআই পাথ খণ্ডন, এবং পুরো পথ /path1/
বা অজানা নয় path1
, যা হতে পারে (এবং পুরো পথ হিসাবে বিবেচিত হবে)।
/
অভাবের কোনও খণ্ডে যদি যোগ করার দরকার হয় তবে আপনি এটি করতে পারেন:
uri = uri if uri.endswith("/") else f"{uri}/"
ইউআরআই রেজোলিউশন সম্পর্কে আরও জানতে, উইকিপিডিয়ায় কিছু দুর্দান্ত উদাহরণ রয়েছে।
হালনাগাদ
শিখরের জবাব হ্রাস করার বিষয়ে কেবল পিটার পেরোন মন্তব্য করেছেন, তবে কীভাবে এটি হয়েছে তা প্রদর্শন করার জন্য আমি এটি এখানে রেখে দেব।