string - मैं पायथन 3 बाइट-स्ट्रिंग चर को एक नियमित स्ट्रिंग में कैसे परिवर्तित करूं?




python-3.x type-conversion (3)

सरणी से गैर-UTF8 चरकों को कैसे फ़िल्टर करें (छोड़ें)?

@ Uname01 के पोस्ट और ओपी में इस टिप्पणी को संबोधित करने के लिए, त्रुटियों को अनदेखा करें:

कोड

>>> b'\x80abc'.decode("utf-8", errors="ignore")
'abc'

विवरण

docs , यहां एक ही errors पैरामीटर का उपयोग करके अधिक उदाहरण दिए गए errors :

>>> b'\x80abc'.decode("utf-8", "replace")
'\ufffdabc'
>>> b'\x80abc'.decode("utf-8", "backslashreplace")
'\\x80abc'
>>> b'\x80abc'.decode("utf-8", "strict")  
Traceback (most recent call last):
    ...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0:
  invalid start byte

त्रुटि तर्क प्रतिक्रिया को निर्दिष्ट करता है जब एन्कोडिंग के नियमों के अनुसार इनपुट स्ट्रिंग को परिवर्तित नहीं किया जा सकता है। इस तर्क के लिए कानूनी मान 'strict' (एक UnicodeDecodeError अपवाद को UnicodeDecodeError ), 'replace' ( U+FFFD UnicodeDecodeError , UnicodeDecodeError ) का उपयोग करें, या 'ignore' (सिर्फ यूनिकोड परिणाम से चरित्र को छोड़ दें)।

मैंने एक XML ईमेल अनुलग्नक में पढ़ा है

bytes_string=part.get_payload(decode=False)

पेलोड बाइट स्ट्रिंग के रूप में आता है, जैसा कि मेरे चर नाम से पता चलता है।

मैं इस स्ट्रिंग को एक उपयोगी स्ट्रिंग में बदलने के लिए अनुशंसित पायथन 3 दृष्टिकोण का उपयोग करने की कोशिश कर रहा हूं जिसे मैं हेरफेर कर सकता हूं।

उदाहरण दिखाता है:

str(b'abc','utf-8')

मैं अपने चर bytes_string पर b (बाइट्स) कीवर्ड तर्क कैसे लागू कर सकता हूं और अनुशंसित दृष्टिकोण का उपयोग कर सकता हूं?

जिस तरह से मैंने कोशिश की वह काम नहीं करता है:

str(bbytes_string, 'utf-8')

आपके पास अंतिम पंक्ति में यह लगभग सही था। तुम्हें चाहिए

str(bytes_string, 'utf-8')

क्योंकि bytes_string का प्रकार bytes , b'abc' के प्रकार के b'abc'


अपडेट:

पहले और अंत में कोई b और उद्धरण नहीं है

चूंकि आपके कोड में 'utf-8' एन्कोडिंग के अपरिचित अक्षर हो सकते हैं, इसलिए बेहतर है कि बिना किसी अतिरिक्त पैरामीटर के केवल स्ट्रैस का उपयोग करें:

bad_bytes = b'\x02-\xdfI#)'
text = str( bad_bytes )[2:-1]

यदि आप इन विशिष्ट बाइट्स में 'utf-8' पैरामीटर जोड़ते हैं, तो आपको त्रुटि प्राप्त करनी चाहिए।

जैसा कि PYTHON 3 मानक कहता है, text utf-8 में होगा, अब कोई चिंता नहीं होगी।






bytestring