programing

Python 3에서 바이트에 대한 b' 접두사 없이 인쇄

linuxpc 2023. 5. 26. 20:46
반응형

Python 3에서 바이트에 대한 b' 접두사 없이 인쇄

인쇄 방법bytes를 제외한 문자열b'Python 3의 접두사?

>>> print(b'hello')
b'hello'

사용하다decode:

>>> print(b'hello'.decode())
hello

바이트가 이미 적절한 문자 인코딩을 사용하는 경우 직접 인쇄할 수 있습니다.

sys.stdout.buffer.write(data)

또는

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

데이터가 UTF-8 호환 형식이면 바이트를 문자열로 변환할 수 있습니다.

>>> print(str(b"hello", "utf-8"))
hello

선택적으로 데이터가 UTF-8과 호환되지 않는 경우(예: 데이터가 원시 바이트) 16진수로 먼저 변환합니다.

>>> from binascii import hexlify
>>> print(hexlify(b"\x13\x37"))
b'1337'
>>> print(str(hexlify(b"\x13\x37"), "utf-8"))
1337
>>> from codecs import encode  # alternative
>>> print(str(encode(b"\x13\x37", "hex"), "utf-8"))
1337

의 출처에 따르면,b''메소드에 구워집니다.

한 가지 해결 방법은 수동으로 절단하는 것입니다.b''결과로부터repr():

>>> x = b'\x01\x02\x03\x04'

>>> print(repr(x))
b'\x01\x02\x03\x04'

>>> print(repr(x)[2:-1])
\x01\x02\x03\x04

표시 또는 인쇄하기

<byte_object>.decode("utf-8")

인코딩 또는 저장 방법

<str_object>.encode('utf-8')

조금 늦었지만 Python 3.9.1의 경우 이것이 저에게 효과가 있었고 -b 접두사를 제거했습니다.

print(outputCode.decode())

너무 단순해요...(이를 통해 사전을 인코딩하고 바이트를 나열한 다음 json.dump / json.dump를 사용하여 문자열화할 수 있습니다.)

base64만 사용하면 됩니다.

import base64

data = b"Hello world!" # Bytes
data = base64.b64encode(data).decode() # Returns a base64 string, which can be decoded without error.
print(data)

기본적으로 디코딩할 수 없는 바이트가 있습니다(예: 사진). 따라서 base64는 해당 바이트를 문자열로 디코딩할 수 있는 바이트로 인코딩하여 사용하는 바이트를 검색합니다.

data = base64.b64decode(data.encode())

사용하다decode()대신에encode()바이트를 문자열로 변환합니다.

>>> import curses
>>> print(curses.version.decode())
2.2

언급URL : https://stackoverflow.com/questions/16748083/print-without-b-prefix-for-bytes-in-python-3

반응형