Conversion d'un entier en chaîne?

1362

Je veux convertir un entier en chaîne en Python. Je le transforme en vain:

d = 15
d.str()

Lorsque j'essaie de le convertir en chaîne, il affiche une erreur comme intsi aucun attribut n'était appelé str.

Péquenaud
la source

Réponses:

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

Liens vers la documentation:

La conversion en chaîne se fait avec la str()fonction intégrée , qui appelle essentiellement la __str__()méthode de son paramètre.

Bastien Léonard
la source
118

Essaye ça:

str(i)
Lasse V. Karlsen
la source
62

Il n'y a pas de transtypage et aucune contrainte de type en Python. Vous devez convertir votre variable de manière explicite.

Pour convertir un objet en chaîne, vous utilisez la str()fonction. Il fonctionne avec tout objet doté d'une méthode appelée __str__()defined. En réalité

str(a)

est équivalent à

a.__str__()

De même si vous voulez convertir quelque chose en int, float, etc.

Andrea Ambu
la source
cette solution m'a aidé, je convertissais une chaîne alphanumérique en une chaîne numérique, remplaçant les lettres par leurs valeurs ascii, mais l'utilisation directe de la fonction str () ne fonctionnait pas, mais __str __ () fonctionnait. Exemple (python2.7); s = "14.2.2.10a2" code non fonctionnel: print "" .join ([str (ord (c)) if (c.isalpha ()) else c for c in s]) code fonctionnel: print "" .join ([ord (c) .__ str __ () if (c.isalpha ()) else c for c in s]) Sortie attendue: 14.2.2.10972
Jayant
18

Pour gérer les entrées non entières:

number = raw_input()
try:
    value = int(number)
except ValueError:
    value = 0
nik
la source
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
la source
11

En Python => 3.6, vous pouvez utiliser le fformatage:

>>> int_value = 10
>>> f'{int_value}'
'10'
>>>
SuperNova
la source
7

Pour Python 3.6, vous pouvez utiliser la nouvelle fonctionnalité f-strings pour convertir en chaîne et c'est plus rapide que la fonction str (), elle est utilisée comme ça:

age = 45
strAge = f'{age}'

Python fournit la fonction str () pour cette raison.

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

Pour une réponse plus détaillée, vous pouvez consulter cet article: Conversion de Python Int en chaîne et Python String en Int

Mohamed Makkaoui
la source
6

La façon la plus décente à mon avis est ``.

i = 32   -->    `i` == '32'
Nikolas
la source
3
Notez que cela équivaut à repr(i), donc ce sera bizarre pour longtemps. (Essayez i = `2 ** 32`; print i)
16
Cela a été déprécié en python 2 et complètement supprimé en python 3, donc je ne suggère plus de l'utiliser. docs.python.org/3.0/whatsnew/3.0.html#removed-syntax
teeks99
6

Peut utiliser %sou.format

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

(OU)

>>> '{}'.format(10)
'10'
>>>
SuperNova
la source
5

Pour quelqu'un qui souhaite convertir int en chaîne en chiffres spécifiques, la méthode ci-dessous est recommandée.

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

Pour plus de détails, vous pouvez vous référer au numéro d'affichage de la question de dépassement de pile avec des zéros en tête .

Eugène
la source
4

Avec l'introduction des chaînes f dans Python 3.6, cela fonctionnera également:

f'{10}' == '10'

C'est en fait plus rapide que d'appeler str(), au détriment de la lisibilité.

En fait, c'est plus rapide que %xle formatage de chaînes et .format()!

Alec Alameddine
la source