O b
prefixo significa um bytes
literal de string .
Se você vê-lo usado no código-fonte do Python 3, a expressão cria um bytes
objeto , não um objeto Unicodestr
regular . Se você vê-lo ecoado em seu shell Python ou como parte de uma lista, dict ou outro conteúdo de contêiner, então você vê um bytes
objeto representado usando esta notação.
bytes
os objetos contêm basicamente uma sequência de inteiros no intervalo de 0 a 255, mas quando representados, o Python exibe esses bytes como pontos de código ASCII para facilitar a leitura de seu conteúdo. Quaisquer bytes fora da impressão gama de caracteres ASCII são mostrados como sequências de escape (por exemplo \n
, \x82
, etc.). Inversamente, você pode usar caracteres ASCII e sequências de escape para definir valores de byte; para valores ASCII, seu valor numérico é usado (por exemplo, b'A'
== b'\x41'
)
Como um bytes
objeto consiste em uma sequência de inteiros, você pode construir um bytes
objeto a partir de qualquer outra sequência de inteiros com valores no intervalo 0-255, como uma lista:
bytes([72, 101, 108, 108, 111])
e a indexação retorna os inteiros (mas o fatiamento produz um novo bytes
valor; para o exemplo acima, value[0]
fornece 72
, mas value[:1]
é b'H'
como 72 é o ponto de código ASCII para a letra maiúscula H ).
bytes
modelar dados binários , incluindo texto codificado . Se o seu bytes
valor contiver texto, você precisa primeiro decodificá-lo, usando o codec correto. Se os dados estiverem codificados como UTF-8, por exemplo, você pode obter um str
valor Unicode com:
strvalue = bytesvalue.decode('utf-8')
Por outro lado, para ir do texto em um str
objeto para bytes
você precisa codificar . Você precisa decidir sobre uma codificação a ser usada; o padrão é usar UTF-8, mas o que você precisa depende muito do seu caso de uso:
bytesvalue = strvalue.encode('utf-8')
Você também pode usar o construtor bytes(strvalue, encoding)
para fazer o mesmo.
Os métodos de decodificação e codificação usam um argumento extra para especificar como os erros devem ser tratados .
O Python 2, versões 2.6 e 2.7 também oferece suporte à criação de literais de string usando b'..'
a sintaxe de literal de string para facilitar o código que funciona em Python 2 e 3.
bytes
os objetos são imutáveis, assim como as str
strings. Use um bytearray()
objeto se precisar ter um valor de bytes mutável.