2013-07-12 6 views
106

उदाहरण के लिए, मैं (subprocess.check_output की वापसी मान) इस तरह की एक स्ट्रिंग है:Python3 में 'बाइनरी स्ट्रिंग' से सामान्य स्ट्रिंग को कैसे परिवर्तित करें?

>>> print(b'a string') 
b'a string' 
>>> print(str(b'a string')) 
b'a string' 

:

>>> b'a string' 
b'a string' 

जो कुछ भी मैं इसे करने के लिए किया था, यह हमेशा कष्टप्रद b' स्ट्रिंग से पहले साथ छपा है क्या किसी के पास कोई सामान्य स्ट्रिंग के रूप में इसका उपयोग करने या इसे सामान्य स्ट्रिंग में बदलने के बारे में कोई विचार है?

उत्तर

150

इसे डीकोड करें।

>>> b'a string'.decode('ascii') 
'a string' 

स्ट्रिंग से बाइट प्राप्त करने के लिए, इसे एन्कोड करें।

>>> 'a string'.encode('ascii') 
b'a string' 
+4

लोगों को अभी भी ascii 2015 में का उपयोग ??? – lyomi

+8

@ एलोमी, मैंने 'ascii' का उपयोग किया क्योंकि दिया गया स्ट्रिंग एसीआई अक्षरों से बना था। एन्कोडिंग निर्दिष्ट करने की आवश्यकता नहीं है यदि एन्कोडिंग 'utf-8' है (पायथन 3.x में डिफ़ॉल्ट 'str.encode',' bytes.decode' दस्तावेज़-स्ट्रिंग के अनुसार) – falsetru

+2

@lyomi 2016 में (और इसके लगभग अंत) लोग अभी भी एसीआईआई का उपयोग करते हैं। कई 'विरासत' उत्पादों और प्रणालियों (विनिर्देशों सहित) हैं, लेकिन ऐसे कई कारण भी हैं जिनसे आप 'बाइनरी स्ट्रिंग' बना रहे हैं, जहां आप यूनिकोड या कुछ बाइट्स को 'मर्ज' करने की कोशिश नहीं करना चाहते हैं एक एकल चरित्र हम अक्सर DNS स्ट्रिंग आदि बनाने के लिए बाइनरी डेटा रखने के लिए 'तार' का उपयोग करते हैं। – Jmons

25

falsetru से जवाब आप भी आजमा सकते हैं काम नहीं किया:

>>> b'a string'.decode('utf-8') 
'a string' 
संबंधित मुद्दे