2013-05-25 3 views
48

बस इस पोस्टिंग तो मैं बाद में इसके लिए खोज कर सकते हैं, के रूप में यह हमेशा मुझे स्टंप करने के लिए लगता है:दबाने/प्रिंट ख के बिना 'उपसर्ग

$ python3.2 
Python 3.2 (r32:88445, Oct 20 2012, 14:09:50) 
[GCC 4.5.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import curses 
>>> print(curses.version) 
b'2.2' 
>>> print(str(curses.version)) 
b'2.2' 
>>> print(curses.version.encode('utf-8')) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'bytes' object has no attribute 'encode' 
>>> print(str(curses.version).encode('utf-8')) 
b"b'2.2'" 

प्रश्न के रूप में: कैसे एक द्विआधारी मुद्रित करने के लिए (bytes) पाइथन 3 में स्ट्रिंग, b' उपसर्ग के बिना?

+0

संबंधित: [? कैसे एन्कोडिंग जानने के बिना पायथन 3 में एक फ़ाइल के लिए बाइट लिखने के लिए] (https://stackoverflow.com/q/ 4290716/4279) – jfs

उत्तर

54

उपयोग decode:

>>> print(curses.version.decode('utf-8')) 
2.2 
+11

'.decode()' decode 'utf-8' डिफ़ॉल्ट रूप से – jamylak

+1

याद रखें कि आप अपना उत्तर स्वीकार कर सकते हैं। – Tim

+0

@jamylak यह अनुस्मारक है कि यह पैरामीटर –

13

बाइट्स एक उचित वर्ण एन्कोडिंग पहले से ही उपयोग करते हैं; आप उन्हें सीधे प्रिंट कर सकते हैं:

sys.stdout.buffer.write(data) 

या

nwritten = os.write(sys.stdout.fileno(), data) # NOTE: it may write less than len(data) bytes 
संबंधित मुद्दे