Konvertieren von Bytes in einen String in Python 3
Problem:
Sie haben das erfasst Standardausgabe eines externen Programms in ein Bytes-Objekt und muss es als Zeichenfolge anzeigen. Zum Beispiel:
import subprocess p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE) stdout, _ = p.communicate()
Dies führt zu einem Byte-Objekt wie:
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n'
Ihr Ziel ist es, dieses Byte-Objekt in einen Standard-Python-String umzuwandeln.
Lösung:
Um ein Byte-Objekt stdout in einen String in Python 3 zu konvertieren, verwenden Sie die decode()-Methode. Diese Methode verwendet die Codierung des Bytes-Objekts als Argument. So geht's:
decoded_stdout = stdout.decode("encoding")
Kodierung auswählen:
Der Kodierungsparameter gibt den Zeichensatz an, der zum Dekodieren der Bytes verwendet wird. Im angegebenen Beispiel wird UTF-8 als Standardkodierung angenommen. Es ist jedoch wichtig, die tatsächliche Kodierung Ihrer Daten zu verwenden.
Wenn Sie die Kodierung nicht kennen, können Sie es mit „utf-8“ versuchen. Alternativ können Sie eine Bibliothek wie chardet verwenden, um die Kodierung automatisch zu erkennen.
Beispiel:
Verwendung von UTF-8 als angenommene Kodierung:
decoded_stdout = stdout.decode("utf-8")
Sie können jetzt Ihre dekodierte Zeichenfolge ausdrucken:
print(decoded_stdout) # Output: # -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1
Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein Bytes-Objekt in einen String in Python 3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!