2013-05-25 20 views
48

dieses Posting Nur so kann ich später danach suchen, wie es immer mich zu Stumpf scheint:Unterdrückt/print ohne b‘Präfix für Bytes in Python 3

$ 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'" 

Als Frage: wie ein binäres drucken (bytes) Zeichenfolge in Python 3, ohne die b' Vorwahl?

+0

verwandte: [? Wie Bytes in Python in eine Datei schreiben 3 ohne die Codierung zu wissen] (https://stackoverflow.com/q/ 4290716/4279) – jfs

Antwort

54

Verwenden decode:

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

'.decode()' dekodiert 'utf-8' standardmäßig – jamylak

+1

Erinnern Sie sich, dass Sie Ihre eigene Antwort akzeptieren können. – Tim

+0

@jamylak es ist Erinnerung, dass es Parameter akzeptieren kann –

13

Wenn der Bytes verwenden, um einen geeigneten Zeichencodierung bereits; Sie können sie direkt drucken:

sys.stdout.buffer.write(data) 

oder

nwritten = os.write(sys.stdout.fileno(), data) # NOTE: it may write less than len(data) bytes