Zum Beispiel habe ich eine Zeichenfolge wie diese (Rückgabewert von subprocess.check_output
):
>>> b'a string'
b'a string'
Was auch immer ich damit gemacht habe, es wird immer mit dem nervigen b'
vor der Zeichenfolge gedruckt :
>>> print(b'a string')
b'a string'
>>> print(str(b'a string'))
b'a string'
Hat jemand eine Idee, wie man es als normale Zeichenfolge verwendet oder in eine normale Zeichenfolge konvertiert?
python
string
python-3.x
binary
Hanfei Sun.
quelle
quelle
Antworten:
Dekodiere es.
Um Bytes von der Zeichenfolge abzurufen, codieren Sie sie.
quelle
ascii
weil die angegebene Zeichenfolge mit ASCII-Buchstaben erstellt wurde. Sie müssen nicht codiert , angeben müssen , wenn die Codierungutf-8
(Standard in Python 3.x nachstr.encode
,bytes.decode
doc-string)import locale
und dannos_encoding = locale.getpreferredencoding()
. Auf diese Weise können wir mitmy_b_string.decode(os_encoding)
sys.getfilesystemencoding()
,sys.stdin.encoding
,sys.stdout.encoding
. Meiner Meinung nach könnte die Verwendung dieser automatischen Codierungserkennung das Problem lösen, da das Unterprogramm (OP verwendet einen Unterprozess) auf andere Weise geschrieben werden könnte, um die Codierung zu bestimmen (oder sogar fest codiert). Trotzdem danke für das Feedback.sys.getfilesystemencoding()
der Name der Codierung zurückgegeben wird, die zum Konvertieren zwischen Unicode-Dateinamen und Byte-Dateinamen verwendet wird, und stark vom verwendeten Betriebssystem abhängt. AFAIK, diese Funktion wird verwendet, um in die bevorzugte Darstellung des Systems zu konvertieren. Das bedeutet, dass es nicht auf die von der Konsole verwendetelocale.getpreferredencoding()
Wenn die Antwort von falsetru nicht funktioniert hat, können Sie auch versuchen:
quelle
Bitte beachten Sie das Büro
encode()
und diedecode()
Dokumentation aus dercodecs
Bibliothek.utf-8
ist die Standardcodierung für die Funktionen, aber in Python 3 gibt es mehrere Standardcodierungen wielatin_1
oderutf_32
.quelle