पायथन: urllib.quote का आयात करना


109

मैं उपयोग करना चाहूंगा urllib.quote()। लेकिन अजगर (python3) को मॉड्यूल नहीं मिल रहा है। मान लीजिए, मेरे पास कोड की यह पंक्ति है:

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

पायथन 3.x में, आपको आयात करने की आवश्यकता है urllib.parse.quote:

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

अजगर केurllib अनुसार 2.x मॉड्यूल प्रलेखन :

ध्यान दें

urllibमॉड्यूल भागों में विभाजित किया गया है और करने के लिए अजगर 3 में नाम दिया गया है urllib.request, urllib.parseऔर urllib.error


54

यदि आपको पायथन 2.x और 3.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

1
आपको आगे की ओर देखना चाहिए। अजगर 3 मान लें और 2.7 को छोड़कर। कोशिश करें: import urllib.parse को urlparse को छोड़कर ImportError: urlparse के आयात से urlparse # python 2.7.11
लिंकन Randall McFarland

@LincolnRandallMcFarland आप जिस बारे में बात कर रहे हैं वह इस तरह का एक अप्रासंगिक सूक्ष्म अनुकूलन है। यह भविष्य में परियोजना में पायथन 2.X समर्थन को पूरी तरह से छोड़ने के लिए कोई कठिन या आसान नहीं बनाता है।
eandersson

यदि आप एक अपवाद को फेंकना और पकड़ना चाहते हैं, तो अपने सबसे सामान्य उपयोग के मामले की मानक आयात प्रक्रिया को सिर्फ इसलिए ... क्योंकि, यह मेरी घड़ी का कोई चक्र नहीं है, लेकिन पता है कि आप क्या कर रहे हैं: अपवाद असाधारण होने चाहिए। यह काम करने और इसे बेहतर बनाने के बीच का अंतर है।
लिंकन रान्डल मैकफारलैंड

यह एक ऐसी निरर्थक चर्चा है। दोनों वैध हैं ... यदि आप पायथन 3 अपवाद को पकड़ते हैं, तो पायथन 2.7 पुस्तकालय को आयात करने का प्रयास करें, लेकिन किसी कारण से दोनों को अपवाद को छोड़ दिया गया है, कहेंगे कि यह पायथन 2.7 पुस्तकालय को याद कर रहा है। बहुत ज्यादा उलझन। वास्तविकता में अगर आप इस बात की परवाह करते हैं कि अपवादों से निपटने के लिए बेहतर तरीके हैं, जैसे कि छह या अपवाद पर भरोसा करने के बजाय पायथन संस्करण की जाँच करना। लेकिन वास्तव में अगर आप इस बात की परवाह करते हैं कि कुछ इतना व्यर्थ है कि आप पायथन 2 को पीछे की अनुकूलता बिल्कुल भी न रखें क्योंकि यह इस वर्ष वैसे भी ईओएल है।
18

14

urllib Python3 में कुछ बदलावों से गुजरा और अब इसे पार्स सबमॉडल से आयात किया जा सकता है

>>> 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.