Python Programming

Python 2 और 3 में बाइट्स से स्ट्रिंग रूपांतरण

Spread the love

Python 2 और Python 3 स्ट्रिंग्स और बाइट्स को अलग तरह से संभालते हैं, जिससे उनके बीच रूपांतरण अंतर्संचालन और डेटा प्रोसेसिंग का एक महत्वपूर्ण पहलू बन जाता है। यह लेख दोनों संस्करणों में बाइट्स को स्ट्रिंग्स में बदलने के लिए एक व्यापक मार्गदर्शिका प्रदान करता है, प्रमुख अंतरों और सर्वोत्तम प्रथाओं को उजागर करता है।

विषय-सूची

Python 3 में बाइट्स को स्ट्रिंग्स में बदलना

Python 3 में, स्ट्रिंग्स यूनिकोड अनुक्रम हैं, जबकि बाइट्स 8-बिट पूर्णांकों के अनुक्रम हैं। रूपांतरण के लिए बाइट डेटा के एन्कोडिंग को निर्दिष्ट करना आवश्यक है। सामान्य एन्कोडिंग में UTF-8, Latin-1 (iso-8859-1), और ASCII शामिल हैं।

decode() विधि इस रूपांतरण के लिए प्राथमिक उपकरण है। एन्कोडिंग एक तर्क के रूप में पारित किया जाता है।


byte_data = b'Hello, world!'  # ध्यान दें कि 'b' उपसर्ग बाइट्स को इंगित करता है

# UTF-8 का उपयोग करके डिकोड करें
string_data = byte_data.decode('utf-8')
print(string_data)  # आउटपुट: Hello, world!

# Latin-1 का उपयोग करके डिकोड करें
string_data = byte_data.decode('latin-1')
print(string_data)  # आउटपुट: Hello, world! (अन्य बाइट अनुक्रमों के साथ भिन्न हो सकता है)

# try-except ब्लॉक के साथ त्रुटियों को संभालना
try:
    string_data = byte_data.decode('ascii')  # यदि गैर-ASCII वर्ण मौजूद हैं तो त्रुटि उत्पन्न करता है
    print(string_data)
except UnicodeDecodeError as e:
    print(f"डिकोडिंग त्रुटि: {e}")

# गैर-ASCII बाइट्स के साथ उदाहरण
byte_data_2 = b'xc3xa9cole'  # UTF-8 में é
string_data_2 = byte_data_2.decode('utf-8')
print(string_data_2)  # आउटपुट: école

# सुचारू त्रुटि हैंडलिंग के लिए 'errors' पैरामीटर का उपयोग करना
string_data_3 = byte_data_2.decode('ascii', errors='replace') #असंगत वर्णों को बदल देता है
print(string_data_3)

errors पैरामीटर डिकोडिंग त्रुटियों को संभालने के लिए विभिन्न विकल्प प्रदान करता है: ‘strict’ (डिफ़ॉल्ट, एक अपवाद उत्पन्न करता है), ‘ignore’ (त्रुटियों को अनदेखा करता है), ‘replace’ (एक प्रतिस्थापन वर्ण के साथ बदलता है), और अन्य। अप्रत्याशित प्रोग्राम समाप्ति को रोकने के लिए हमेशा संभावित त्रुटियों को संभालें।

Python 2 में बाइट्स को स्ट्रिंग्स में बदलना

Python 2 का str प्रकार अनिवार्य रूप से एक बाइट अनुक्रम है, यूनिकोड नहीं। unicode प्रकार यूनिकोड स्ट्रिंग्स का प्रतिनिधित्व करता है। बाइट्स को यूनिकोड स्ट्रिंग में बदलने में unicode() फ़ंक्शन शामिल है।


byte_data = 'Hello, world!'  # Python 2 में, यह निहित रूप से बाइट्स है

# UTF-8 का उपयोग करके बाइट्स को यूनिकोड में बदलें
string_data = unicode(byte_data, 'utf-8')
print string_data  # आउटपुट: Hello, world!

# Latin-1 का उपयोग करके बदलें
string_data = unicode(byte_data, 'latin-1')
print string_data  # आउटपुट: Hello, world! (अन्य बाइट अनुक्रमों के साथ भिन्न हो सकता है)

# त्रुटि हैंडलिंग
try:
    string_data = unicode(byte_data, 'ascii')
    print string_data
except UnicodeDecodeError as e:
    print "डिकोडिंग त्रुटि: %s" % e

# गैर-ASCII बाइट्स के साथ उदाहरण
byte_data_2 = 'xc3xa9cole'.encode('utf-8') # पहले एक यूनिकोड लिटरल से एन्कोड करें
string_data_2 = unicode(byte_data_2, 'utf-8')
print string_data_2  # आउटपुट: école

ध्यान दें कि Python 2 में, unicode() फ़ंक्शन Python 3 में decode() विधि के समान है। इसी तरह की त्रुटि-हैंडलिंग रणनीतियाँ लागू होती हैं।

Python 2 से Python 3 में सफल माइग्रेशन के लिए इन अंतरों को समझना आवश्यक है। डेटा अखंडता सुनिश्चित करने और अप्रत्याशित समस्याओं को रोकने के लिए हमेशा स्पष्ट एन्कोडिंग विनिर्देश और उचित त्रुटि हैंडलिंग को प्राथमिकता दें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *