El prefijo b
significa bytes
string literal.
Si lo ve utilizado en el código fuente de Python 3, la expresión crea un bytes
object, no un Unicode str
object normal. Si ve que se hizo eco en su shell de Python o como parte de una lista, dict u otro contenido del contenedor, verá un objeto bytes
representado utilizando esta notación.
bytes
objetos contienen básicamente una secuencia de enteros en el rango 0-255, pero cuando se representan, Python muestra estos bytes como puntos de código ASCII para facilitar la lectura de sus contenidos. Cualquier bytes fuera de la imprimible gama de caracteres ASCII se muestran como secuencias de escape (por ejemplo \n
, \x82
, etc.).
Dado que un objeto bytes
consisten en una secuencia de números enteros, se puede construir un objeto bytes
de cualquier otra secuencia de números enteros con valores en el rango 0-255, como una lista:
bytes([72, 101, 108, 108, 111])
bytes
modelo datos binarios, incluido texto codificado. Si su valor bytes
contiene texto, primero debe descodificarlo, utilizando el códec correcto. Si los datos se codifica como UTF-8, por ejemplo, se puede obtener un str
valor Unicode con:
strvalue = bytesvalue.decode('utf-8')
A la inversa, para ir de texto de un objeto str
a bytes
que necesita para codificar. Debe decidir sobre una codificación para usar; el valor por defecto es utilizar UTF-8, pero lo que se necesita depende de su caso de uso altamente:
bytesvalue = strvalue.encode('utf-8')
También puede utilizar el constructor, a hacer lo mismo.
Tanto la codificación y decodificación métodos toman un argumento adicional para specify how errors should be handled.
Python 2, las versiones 2.6 y 2.7 también admite la creación de literales de cadenas usando la sintaxis literal de cadenas b'..'
, para facilitar el código que funciona en Python 2 y 3.
@SLott: siga el enlace que proporcionó verá que el prefijo b no está ** permitido ** en prefijo de cadena ... para 2.6 (parece un error menor en el material de referencia). Y buscar en Google sobre este tipo de cosas no es fácil. Probé palabras clave como "b python string prefix" y prácticamente no llegué a ninguna parte. – kriss
El enlace S.Lott utilizado le falta un especificador de versión; esto es sobre Python 3: https://docs.python.org/3/reference/lexical_analysis.html#string-literals. El prefijo está ahora también apoyó en [Python 2.6 y up] (https://docs.python.org/2/whatsnew/2.6.html#pep-3112-byte-literals) para facilitar transversal versión del código Python. –
esta pregunta no es ni "un duplicado exacto" ni una respuesta a la pregunta "¿Puedo deshacerme de este carácter 'b' en mi declaración de impresión?" http://stackoverflow.com/questions/42599851/can-i-get-rid-of-this-b-character-in-my-print-statement/42599902#42599902 ¿le importaría que desmarcándolos favor Marijin? la persona que preguntó, así como la persona que realmente intentó una respuesta, apreciarían poder tener una respuesta a la pregunta real planteada. –