প্রক্রিয়াকরণের পরে আমি ডিকাকে কীভাবে রূপান্তর করতে পারি urllib.urlencode
?
urllib.urldecode
এটির অস্তিত্ব নেই.
উত্তর:
ডকস হিসাবে urlencode
বলার জন্য ,
Urlparse মডিউল পার্স_কিউ () এবং parse_qsl () ফাংশন সরবরাহ করে যা পাইথন ডেটা স্ট্রাকচারে ক্যোয়ারী স্ট্রিংগুলি পার্স করতে ব্যবহৃত হয়।
(পুরানো পাইথন রিলিজগুলিতে, তারা cgi
মডিউলে ছিল)। সুতরাং, উদাহরণস্বরূপ:
>>> import urllib
>>> import urlparse
>>> d = {'a':'b', 'c':'d'}
>>> s = urllib.urlencode(d)
>>> s
'a=b&c=d'
>>> d1 = urlparse.parse_qs(s)
>>> d1
{'a': ['b'], 'c': ['d']}
মূল অভিধান d
এবং "রাউন্ড-ট্রিপড" এর মধ্যে স্পষ্টত পার্থক্যটি d1
হ'ল পরবর্তীটির (একক আইটেম, এক্ষেত্রে ) মান হিসাবে তালিকাভুক্ত হয় - এর কারণ ক্যোয়ারী স্ট্রিংগুলিতে কোনও স্বতন্ত্র গ্যারান্টি নেই এবং এটি গুরুত্বপূর্ণ হতে পারে প্রতিটি অ্যাপ্লিকেশনের জন্য কী কী একাধিক মান দেওয়া হয়েছে তা জানতে আপনার অ্যাপ্লিকেশনটিতে (অর্থাত্ তালিকাগুলি সর্বদা একক আইটেমের হবে না ;-)।
বিকল্প হিসাবে:
>>> sq = urlparse.parse_qsl(s)
>>> sq
[('a', 'b'), ('c', 'd')]
>>> dict(sq)
{'a': 'b', 'c': 'd'}
আপনি জোড়ার ক্রম পেতে পারেন (ইউরেনকোড এ জাতীয় যুক্তিটিও গ্রহণ করে) - এই ক্ষেত্রে এটি ক্রম সংরক্ষণ করে, যখন ডিকের ক্ষেত্রে সংরক্ষণের কোনও আদেশ নেই ;-)। আপনি যদি জানেন যে কোনও নকল "কী" নেই, বা আছে কিনা সেদিকে খেয়াল রাখেন না, তবে (যেমন আমি দেখিয়েছি) আপনি dict
তালিকাবিহীন মান সহ একটি অভিধান পেতে কল করতে পারেন। সাধারণভাবে, যাইহোক, আপনি বিবেচনা করতে আপনি কি করতে চান তাহলে সদৃশ প্রয়োজন হয় বর্তমান (পাইথন যে সিদ্ধান্ত না আপনার পক্ষ ;-) উপর।
urllib
মডিউলে রয়েছে। @ ফোবি উত্তর দেখুন।
অ্যালেক্সের সমাধানের জন্য পাইথন 3 কোড :
>>> import urllib.parse
>>> d = {'a':'b', 'c':'d'}
>>> s = urllib.parse.urlencode(d)
>>> s
'a=b&c=d'
>>> d1 = urllib.parse.parse_qs(s)
>>> d1
{'a': ['b'], 'c': ['d']}
বিকল্প:
>>> sq = urllib.parse.parse_qsl(s)
>>> sq
[('a', 'b'), ('c', 'd')]
>>> dict(sq)
{'a': 'b', 'c': 'd'}
পার্স_কিউএসএল বিপরীতমুখী:
>>> urllib.parse.urlencode(sq)
'a=b&c=d'
urllib.unquote_plus()
আপনি যা চান তা করে এটি% xx এস্কেপগুলিকে তাদের একক-অক্ষর সমতুল্য দ্বারা প্রতিস্থাপিত করে এবং ফাঁক চিহ্ন সহ প্লাস চিহ্নগুলিকে প্রতিস্থাপন করে।
উদাহরণ:
unquote_plus('/%7Ecandidates/?name=john+connolly')
উৎপাদনের
'/~candidates/?name=john connolly'.