URL প্যারামিটারগুলিতে পাইথন অভিধান


124

আমি পাইথন অভিধানটি ইউআরএল পরামিতি হিসাবে ব্যবহারের জন্য স্ট্রিংয়ে রূপান্তর করার চেষ্টা করছি। আমি নিশ্চিত যে এটি করার আরও ভাল, আরও পাইথোনিক উপায় রয়েছে। এটা কি?

x = ""
for key, val in {'a':'A', 'b':'B'}.items():
    x += "%s=%s&" %(key,val)
x = x[:-1]

উত্তর:


252

ব্যবহার urllib.urlencode()। এটি কী-মান জোড়ের একটি অভিধান নেয় এবং এটিকে একটি ইউআরএল (যেমন, key1=val1&key2=val2) এর জন্য উপযুক্ত আকারে রূপান্তর করে ।

আপনি যদি পাইথন 3 ব্যবহার করেন তবে ব্যবহার করুন urllib.parse.urlencode()

আপনি যদি পুনরাবৃত্তিমূলক প্যারামগুলি সহ একটি URL তৈরি করতে চান তবে: p=1&p=2&p=3আপনার দুটি বিকল্প রয়েছে:

>>> import urllib
>>> a = (('p',1),('p',2), ('p', 3))
>>> urllib.urlencode(a)
'p=1&p=2&p=3'

বা যদি আপনি পুনরাবৃত্তি প্যারাম দিয়ে একটি url করতে চান:

>>> urllib.urlencode({'p': [1, 2, 3]}, doseq=True)
'p=1&p=2&p=3'

4
আপনি উদাহরণস্বরূপ পুনরাবৃত্তিমূলক প্যারামগুলির সাথে একটি url তৈরি করতে চাইলে:? পি = 1 & পি = 2 এবং পি = 3 তবে a = (('পি', 1), ('পি', 2), ('পি', 3)); urllib.urlencode (a) ফলাফল 'p = 1 & p = 2 & p = 3'
পাঁচিকোর

6
পুনরাবৃত্তিযোগ্য প্যারামগুলি পাওয়ার আরেকটি উপায়: urllib.urlencode ({'p': [1, 2, 3]}, ডোজকু = সত্য) এর ফলস্বরূপ 'পি = 1 & পি = 2 & পি = 3'।
এমবাচটোল্ড

যদি আপনি কীসের doeseqবিষয়ে অবাক হন : "ক্যোয়ারী আর্গের কোনও মান যদি সিকোয়েন্স এবং ডোজাক সত্য হয় তবে প্রতিটি সিকোয়েন্স উপাদান একটি পৃথক প্যারামিটারে রূপান্তরিত হয়।"
মার্টিন থোমা

2

তৃতীয় পক্ষের পাইথন url ম্যানিপুলেশন লাইব্রেরির ফার্ল ব্যবহার করুন :

f = furl.furl('')
f.args = {'a':'A', 'b':'B'}
print(f.url) # prints ... '?a=A&b=B'

আপনি যদি পুনরাবৃত্তিমূলক পরামিতিগুলি চান, আপনি নিম্নলিখিতগুলি করতে পারেন:

f = furl.furl('')
f.args = [('a', 'A'), ('b', 'B'),('b', 'B2')]
print(f.url) # prints ... '?a=A&b=B&b=B2'

আমি কোথা থেকে ঝাল পেতে পারি? এটি কোনও স্ট্যান্ডার্ড লাইব্রেরি বলে মনে হচ্ছে না
AMADANON Inc.

1
pip install furlএটি স্ট্যান্ডার্ড লাইব্রেরির অংশ নয়
মায়াঙ্ক জয়সওয়াল

-7

এটি আমার কাছে কিছুটা পাইথোনিক মনে হয়, এবং অন্য কোনও মডিউল ব্যবহার করে না:

x = '&'.join(["{}={}".format(k, v) for k, v in {'a':'A', 'b':'B'}.items()])

8
এটি প্যারামিটারগুলিকে সঠিকভাবে এনকোড করবে না। এটি যদি অপ্রত্যাশিত ফলাফল তৈরি করে তবে যদি আপনার ডেটাতে এম্পারস্যান্ডস, সমান, হ্যাশ প্রতীক ইত্যাদি অন্তর্ভুক্ত থাকে
জেমি ককবার্ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.