¿Cómo puedo cambiar cualquier tipo de datos en una cadena en Python?
¿Cómo puedo cambiar cualquier tipo de datos en una cadena en Python?
Respuestas:
myvariable = 4
mystring = str(myvariable) # '4'
También, alternativamente, intente repr:
mystring = repr(myvariable) # '4'
Esto se llama "conversión" en python, y es bastante común.
str(u'ä')no funcionará. Sin embargo repr(u'ä')funcionará.
strestá destinado a producir una representación en cadena de los datos del objeto. Si estás escribiendo tu propia clase y quieres strtrabajar para ti, agrega:
def __str__(self):
return "Some descriptive string"
print str(myObj)llamará myObj.__str__().
repres un método similar, que generalmente produce información sobre la información de la clase. Para la mayoría de los objetos de la biblioteca central, reprproduce el nombre de la clase (y en algún momento alguna información de clase) entre paréntesis angulares. reprse usará, por ejemplo, simplemente escribiendo su objeto en el panel de interacciones, sin usar printni nada más.
Puede definir el comportamiento de reprsus propios objetos al igual que puede definir el comportamiento de str:
def __repr__(self):
return "Some descriptive string"
>>> myObjen su panel de interacciones, o repr(myObj), dará como resultadomyObj.__repr__()
object.__repr__estilo de paréntesis angular, pero muchos de los más utilizados no lo hacen. La regla de oro para repres que si tiene sentido para devolver el código Python que podrían ser evaluados para producir el mismo objeto, lo que, al igual str, frozensety la mayoría de los otros órdenes internas hacen, pero si no es así, utilizan la escuadra angular formulario para asegurarse de que lo que devuelve no se pueda confundir con una representación humana legible y evaluable como fuente.
listque se incluye a sí misma devuelve algo que no solo se ve sino que es un código evaluable, que evalúa lo incorrecto, pero los desarrolladores principales nunca lo han tomado como una licencia para expandir el mismo comportamiento en el stdlib.)
Veo todas las respuestas recomiendan usar str(object). Podría fallar si su objeto tiene más de caracteres ascii y verá un error como ordinal not in range(128). Este fue el caso para mí mientras convertía la lista de cadenas en un idioma que no era inglés
Lo resolví usando unicode(object)
str(object) Hará el truco.
Si desea alterar la forma en que el objeto está en cadena, defina el __str__(self)método para la clase del objeto. Tal método tiene que devolver str u objeto unicode.
str(any_var)oany_var.__str__()
timeitmódulo), debe usarlo str(any_var)ya que es más legible para los humanos y permite beneficiarse de los casos cuando se any_vardefine, __repr__()pero no t definir __str__().
Use el strincorporado:
x = str(something)
Ejemplos:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
De la documentación:
Devuelve una cadena que contiene una representación muy bien imprimible de un objeto. Para cadenas, esto devuelve la cadena en sí. La diferencia con repr (objeto) es que str (objeto) no siempre intenta devolver una cadena que sea aceptable para eval (); Su objetivo es devolver una cadena imprimible. Si no se proporciona ningún argumento, devuelve la cadena vacía ''.
Solo use str, por ejemplo:
>>> str([])
'[]'
Tenga cuidado si realmente quiere "cambiar" el tipo de datos. Al igual que en otros casos (por ejemplo, cambiar el iterador en un forbucle), esto podría generar un comportamiento inesperado:
>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18
str(var)? ¿Es eso lo que estás buscando?