Puedo usar 'a' + 1 para obtener 'b' en lenguaje C, así que ¿cuál es la forma más conveniente de hacerlo en Python?
puedo escribirlo como:python: cómo generar char agregando int
chr(ord('a')+1)
pero no sé si se trata de la mejor manera.
Puedo usar 'a' + 1 para obtener 'b' en lenguaje C, así que ¿cuál es la forma más conveniente de hacerlo en Python?
puedo escribirlo como:python: cómo generar char agregando int
chr(ord('a')+1)
pero no sé si se trata de la mejor manera.
Sí, esta es la mejor manera de Python no convierte automáticamente entre un personaje y un int la forma en C y C++ hacen
Python no tiene realmente un tipo de carácter, a diferencia de C, por lo que sí, chr (ord es la manera de hacerlo.
Si quisiera hacerlo un poco más limpia, se podía hacer algo como :.
def add(c, x):
return chr(ord(c)+x)
lo que está haciendo es realmente la manera correcta.. Python no combina un carácter con su punto de código numérico, como lo hacen C y otros idiomas similares. es que una vez que vas más allá de ASCII, el mismo valor integral puede representar diferentes caracteres, dependiendo de la codificación. C enfatiza el acceso directo a los formatos de hardware subyacentes, pero Python enfatiza la semántica bien definida.
No es el tipo bytearray
en Python - es más lento que las cadenas normales, pero se comporta sobre todo como una cadena C: es mutable, acessing elementos inidividual plantean 0 - 255 números enteros, insetead de subseries con longitud 1, y puedes asignar a los elementos. Aún así, se representa como una cadena, y en Python 2, se puede utilizar en la mayoría de lugares de una cadena puede sin ser echado a un objeto str:
>>> text = bytearray("a")
>>> text
bytearray(b'a')
>>> print text
a
>>> text[0]+=1
>>> print text
b
>>> text[0]
98
>>> print "other_text" + text
other_textb
Al utilizar Python 3, para usar el contenido de un bytearray como un objeto de texto, sólo tiene que llamar a su método de decodificación con una codificación apropiado, como "latin1" o UTF-8" :.?
>>> print ("other_text" + text.decode("latin1"))
que va a trabajar ¿Qué quiere decir con 'mejor' – zmbq
se advirtió que las cuerdas en Python se almacenan con una codificación. En Python 2.x, la codificación predeterminada es ASCII a la que agregar un entero no debería ser un problema. En Python 3.x, las cadenas por defecto son UTF8 unicode. Obtendrás un er ror al agregar un entero a caracteres Unicode si se desborda más allá de 127. http://docs.python.org/howto/unicode.html#the-unicode-type – shimofuri
@shimofuri, python 3 strings son Unicode. Utf-8 es una codificación. – alexis