¿Convertir entero a cadena?

1362

Quiero convertir un número entero en una cadena en Python. Lo estoy encasillando en vano:

d = 15
d.str()

Cuando trato de convertirlo a cadena, muestra un error como intque no tiene ningún atributo llamado str.

Paleto
fuente

Respuestas:

2095
>>> str(10)
'10'
>>> int('10')
10

Enlaces a la documentación:

La conversión a una cadena se realiza con la str()función incorporada , que básicamente llama al __str__()método de su parámetro.

Bastien Léonard
fuente
118

Prueba esto:

str(i)
Lasse V. Karlsen
fuente
62

No hay conversión de texto ni coerción de tipo en Python. Tienes que convertir tu variable de manera explícita.

Para convertir un objeto en cadena, usa la str()función. Funciona con cualquier objeto que tenga un método llamado __str__()definido. De hecho

str(a)

es equivalente a

a.__str__()

Lo mismo si quieres convertir algo a int, float, etc.

Andrea Ambu
fuente
esta solución me ayudó, estaba convirtiendo una cadena alfanumérica en una cadena numérica, reemplazando letras con sus valores ascii, sin embargo, el uso directo de la función str () no funcionaba, pero __str __ () funcionaba. Ejemplo (python2.7); s = "14.2.2.10a2" código que no funciona: print "" .join ([str (ord (c)) if (c.isalpha ()) else c for c in s]) código de trabajo: print "" .join ([ord (c) .__ str __ () if (c.isalpha ()) else c for c in s]) Salida esperada: 14.2.2.10972
Jayant
18

Para administrar entradas no enteras:

number = raw_input()
try:
    value = int(number)
except ValueError:
    value = 0
nik
fuente
14
>>> i = 5
>>> print "Hello, world the number is " + i
TypeError: must be str, not int
>>> s = str(i)
>>> print "Hello, world the number is " + s
Hello, world the number is 5
maxaposteriori
fuente
11

En Python => 3.6 puedes usar el fformato:

>>> int_value = 10
>>> f'{int_value}'
'10'
>>>
SuperNova
fuente
7

Para Python 3.6 puede usar la nueva característica f-strings para convertir a string y es más rápida en comparación con la función str (), se usa así:

age = 45
strAge = f'{age}'

Python proporciona la función str () por ese motivo.

digit = 10
print(type(digit)) # will show <class 'int'>
convertedDigit= str(digit)
print(type(convertedDigit)) # will show <class 'str'>

Para obtener una respuesta más detallada, puede consultar este artículo: Convertir Python Int a String y Python String a Int

Mohamed Makkaoui
fuente
6

La forma más decente en mi opinión es ``.

i = 32   -->    `i` == '32'
Nikolas
fuente
3
Tenga en cuenta que esto es equivalente a repr(i), por lo que será extraño durante largos. (Prueba i = `2 ** 32`; print i)
16
Esto se ha desaprobado en Python 2 y se ha eliminado por completo en Python 3, por lo que no recomendaría usarlo más. docs.python.org/3.0/whatsnew/3.0.html#removed-syntax
teeks99
6

Puede usar %so.format

>>> "%s" % 10
'10'
>>>

(O)

>>> '{}'.format(10)
'10'
>>>
SuperNova
fuente
5

Para alguien que quiera convertir int a string en dígitos específicos, se recomienda el siguiente método.

month = "{0:04d}".format(localtime[1])

Para más detalles, puede hacer referencia a desbordamiento de pila pregunta Nº presentación con ceros a la izquierda .

Eugene
fuente
4

Con la introducción de f-strings en Python 3.6, esto también funcionará:

f'{10}' == '10'

En realidad, es más rápido que llamar str(), a costa de la legibilidad.

De hecho, es más rápido que el %xformateo de cadenas y .format()!

Alec Alameddine
fuente