পাইথন: urllib.quote আমদানি করা হচ্ছে


109

আমি ব্যবহার করতে চাই urllib.quote()। তবে পাইথন (পাইথন 3) মডিউলটি খুঁজে পাচ্ছে না। ধরুন, আমার কাছে কোডের এই লাইন রয়েছে:

print(urllib.quote("châteu", safe=''))

আমি কীভাবে urllib.quote আমদানি করব?

import urllibবা import urllib.quoteউভয় দিতে

AttributeError: 'module' object has no attribute 'quote'

আমাকে যা বিভ্রান্ত করে তা urllib.requestহ'ল এটিই প্রবেশযোগ্যimport urllib.request

উত্তর:


180

পাইথন ৩.x এ আপনাকে আমদানি করতে হবে urllib.parse.quote:

>>> import urllib.parse
>>> urllib.parse.quote("châteu", safe='')
'ch%C3%A2teu'

পাইথন ২.x urllibমডিউল ডকুমেন্টেশন অনুসারে :

বিঃদ্রঃ

urllibমডিউল ভাগে বিভক্ত হয়েছে এবং পাইথন 3 নতুন নামকরণ করেছে urllib.request, urllib.parseএবং urllib.error


54

আপনার যদি পাইথন ২.x এবং ৩.x উভয়ই হ্যান্ডেল করতে হয় তবে আপনি ব্যতিক্রমটি ধরে রাখতে পারেন এবং বিকল্পটি লোড করতে পারেন।

try:
    from urllib import quote  # Python 2.X
except ImportError:
    from urllib.parse import quote  # Python 3+

আপনি এটি পরিচালনা করতে পাইথন সামঞ্জস্যতা র‌্যাপার ছয়টি ব্যবহার করতে পারেন ।

from six.moves.urllib.parse import quote

আপনি আরও এগিয়ে খুঁজছেন করা উচিত। পাইথন 3 অনুমান করুন এবং 2.7 ব্যতীত। চেষ্টা করুন: আমদানি তদন্ত ব্যতীত urlib.parse urlparse হিসাবে আমদানি করুন: urlparse আমদানি urlparse থেকে # পাইথন ২.7.১১
লিঙ্কন র্যান্ডাল ম্যাকফারল্যান্ড

@ লিংকনআর্যান্ডল এমসিফারল্যান্ড আপনি যে বিষয়ে কথা বলছেন তা এই জাতীয় অপ্রাসঙ্গিক মাইক্রো অপ্টিমাইজেশন। ভবিষ্যতে পাইথন ২ এক্স এক্স সম্পূর্ণরূপে প্রকল্পে ফেলে দেওয়া এটিকে আরও শক্ত বা সহজ করে না।
ই্যান্ডারসন

যদি আপনি কেবলমাত্র তার কারণ হিসাবে আপনার সর্বাধিক সাধারণ ব্যবহারের ক্ষেত্রে স্ট্যান্ডার্ড আমদানি প্রক্রিয়াটি ছুঁড়ে ফেলতে এবং ধরতে চান তবে, এটি আমার ঘড়ির বাইরে কোনও চক্র নয় তবে আপনি কী করছেন তা জানেন: ব্যতিক্রম ব্যতিক্রমী হওয়া উচিত। এটি কাজ করে এটি আরও ভাল করার মধ্যে পার্থক্য।
লিংকন র্যান্ডাল ম্যাকফারল্যান্ড

এটি এমন অর্থহীন আলোচনা। উভয়ই বৈধ ... যদি আপনি পাইথন 3 ব্যতিক্রমটি ধরেন তবে পাইথন ২.7 গ্রন্থাগারটি আমদানি করার চেষ্টা করুন, তবে কোনও কারণে উভয়ই ব্যতিক্রম অনুপস্থিত রয়েছে বলে দেবে এটি পাইথন ২.7 গ্রন্থাগারটি অনুপস্থিত। খুবই বিভ্রান্তিকর. বাস্তবে আপনি যদি ব্যাতিক্রম সম্পর্কে খুব বেশি যত্নবান হন তবে এটি হ্যান্ডেল করার আরও ভাল উপায় রয়েছে যেমন, ছয়টি বা ব্যতিক্রমের উপর নির্ভর করার পরিবর্তে পাইথন সংস্করণটি পরীক্ষা করা। তবে বাস্তবে যদি আপনি এত অর্থহীন কোনও বিষয়ে খুব বেশি যত্নশীল হন তবে আপনাকে পাইথনকে 2 পিছনের দিকে সামঞ্জস্যতা রাখা উচিত নয় কারণ এটি এই বছর যেভাবে EOL।
ই্যান্ডারসন

14

urllib পাইথন 3 এর কিছু পরিবর্তন ঘটিয়েছে এবং এখন পার্স সাবমডিউল থেকে আমদানি করা যেতে পারে

>>> from urllib.parse import quote  
>>> quote('"')                      
'%22'                               

4

ব্যতিক্রম ব্যবহার না করেই আমি এটি হ্যান্ডেল করি।

import sys
if sys.version_info.major > 2:  # Python 3 or later
    from urllib.parse import quote
else:  # Python 2
    from urllib import quote
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.