HOWTO · Python
Équivalent de tostring() en Python
Découvrez les outils Python qui remplacent tostring() : str() pour convertir, join() pour les chaînes, f-strings ou str.format() pour les modèles et __str__() pour les objets personnalisés.
Sur cette page
Python ne possède pas de méthode nommée tostring() ; la méthode correspondante en Java s’écrit toString(). Utilisez la fonction intégrée str(value) pour obtenir la représentation textuelle d’une valeur. Utilisez join() pour combiner plusieurs chaînes, et les f-strings ou str.format() pour construire un message. Ces opérations produisent du texte d’affichage, pas un format de sérialisation universel.
Convertir une valeur avec str()
str() renvoie une chaîne pour les nombres, les collections et la plupart des autres objets Python. C’est la réponse directe à la question « Quel est l’équivalent de tostring() en Python ? ». Pour une collection, le résultat est sa représentation lisible, avec ses délimiteurs et les représentations de ses éléments.
number = 123
values = [1, 2, 3]
print(str(number))
print(str(values))
Sortie :
123
[1, 2, 3]
Le résultat des deux appels est un str. Convertir ainsi un dictionnaire ou une liste ne produit ni du JSON, ni du CSV, ni un autre format d’échange. Utilisez une bibliothèque adaptée au format lorsqu’un autre programme doit lire les données de façon fiable.
Joindre des chaînes et des valeurs mixtes
Appelez join() sur le séparateur, pas sur la liste. Chaque élément transmis à join() doit déjà être une chaîne. Cette limite utile distingue la jointure de la conversion générale.
words = ["Hello", "world", "from", "Python"]
sentence = " ".join(words)
mixed = "|".join(map(str, [1, "two", None]))
print(sentence)
print(mixed)
Sortie :
Hello world from Python
1|two|None
Pour un itérable contenant des nombres ou d’autres objets, map(str, values) convertit chaque élément avant la jointure. Un appel direct tel que ", ".join(["one", 2]) lève une TypeError, car join() ne convertit pas implicitement les éléments qui ne sont pas des chaînes.
Formater des valeurs avec des f-strings
Utilisez une f-string lorsqu’un message contient des valeurs et que le modèle est connu à l’endroit où vous écrivez le code. Les expressions placées entre accolades sont évaluées et converties pendant le formatage. Les spécifications de format permettent de régler la précision, la largeur et d’autres détails de présentation.
name = "Ada"
score = 3.14159
message = f"{name} scored {score:.2f}"
print(message)
Sortie :
Ada scored 3.14
Les f-strings ont été introduites dans Python 3.6 et sont disponibles dans la série actuelle Python 3.14. Elles sont généralement le choix le plus clair pour un modèle local et lisible, mais ne doivent pas servir à sérialiser des données destinées à un autre système.
Utiliser str.format() pour les modèles
str.format() est utile lorsqu’un modèle est stocké séparément, réutilisé ou doit prendre en charge du code antérieur aux f-strings. La méthode convertit les valeurs fournies tout en remplaçant les champs numérotés ou nommés.
item = "apple"
quantity = 5
message = "I have {quantity} {item}s.".format(quantity=quantity, item=item)
print(message)
Sortie :
I have 5 apples.
Préférez les champs nommés lorsqu’un modèle comporte plusieurs valeurs : ils rendent plus lisible le lien entre chaque espace réservé et sa valeur. Pour du nouveau code avec un modèle en ligne, une f-string est généralement plus courte.
Définir __str__() pour des objets personnalisés
Implémentez __str__() lorsque votre classe a besoin d’une représentation utile et lisible par une personne. Python l’appelle pour str(instance) et lorsque print() affiche l’instance. La méthode doit renvoyer une chaîne, et non un nombre ou un autre objet.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name} ({self.age})"
person = Person("Ada", 36)
print(str(person))
Sortie :
Ada (36)
Gardez __str__() concise et utile aux personnes. __repr__() répond à un objectif différent, tourné vers le débogage et les développeurs ; définir l’une ne remplace pas l’autre.
Limites et résumé des méthodes
Choisissez l’opération qui correspond au résultat recherché :
- Utilisez
str(value)pour une valeur ou pour obtenir la représentation lisible d’une collection. - Utilisez
separator.join(strings)pour combiner des chaînes, en convertissant d’abord les éléments avecmap(str, values)si nécessaire. - Utilisez les f-strings pour des modèles en ligne lisibles et
str.format()pour des modèles réutilisables ou stockés séparément. - Implémentez
__str__()lorsque votre propre classe a besoin d’une représentation lisible par une personne.
Ces méthodes ne garantissent pas une représentation réversible ou lisible par une machine. Pour JSON, utilisez json.dumps() et gérez les types que JSON ne peut pas représenter. Pour un format d’échange personnalisé, définissez explicitement son schéma au lieu de dépendre de la sortie de str().
En bref, remplacez un appel tostring() de style Java par str(value), puis choisissez join(), une f-string, str.format() ou __str__() lorsque la tâche consiste précisément à combiner, formater ou personnaliser du texte.