
Cet article décrit comment concaténer des chaînes en Python.
- Concaténer plusieurs chaînes :
+, += operator
- Concaténer des chaînes et des nombres :
+, += operator, str(), format(), f-string
- Concaténer une liste de chaînes en une seule :
join()
- Concaténer une liste de nombres en une seule chaîne :
join(), str()
Concaténer plusieurs chaînes :+, += operator
+ opérateur
Vous pouvez concaténer des littéraux de chaîne (‘…’ ou « … ») et des variables de chaîne avec l’opérateur +.
s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc
s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'
s = s1 + s2 + s3
print(s)
# aaabbbccc
s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd
+= opérateur
Vous pouvez ajouter une autre chaîne à une chaîne avec l’opérateur sur place, +=. La chaîne de droite est concaténée après la variable de chaîne de gauche.
s1 += s2
print(s1)
# aaabbb
Si vous souhaitez ajouter une chaîne à la fin d’une variable chaîne, utilisez l’opérateur +=.
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
Concaténer en écrivant des littéraux de chaîne consécutivement
Si vous écrivez des littéraux de chaîne consécutivement, ils sont concaténés.
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
Même s’il y a plusieurs espaces ou retours à la ligne avec une barre oblique inverse (considérés comme des lignes de continuation) entre les chaînes, ils sont concaténés.
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'
'bbb'
'ccc'
print(s)
# aaabbbccc
En utilisant cela, vous pouvez écrire de longues chaînes sur plusieurs lignes dans le code.
Vous ne pouvez pas faire cela pour les variables de chaîne.
# s = s1 s2 s3
# SyntaxError: invalid syntax
Concaténer des chaînes et des nombres :+, += operator, str(), format(), f-string
L’opération + entre différents types génère une erreur.
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
Si vous souhaitez concaténer une chaîne et un nombre, tel qu’un entier entier ou un flottant à virgule flottante, convertissez le nombre en chaîne avec str(), puis utilisez l’opérateur + ou l’opérateur +=.
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
Utilisez la fonction format () ou la méthode de chaîne format () si vous souhaitez convertir le format numérique, tel que le remplissage par zéro ou les décimales.
s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000
s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000
Bien sûr, il est aussi possible d’embarquer la valeur d’une variable directement dans une chaîne sans en préciser le format, ce qui est plus simple que d’utiliser l’opérateur +.
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
Dans Python 3.6 et versions ultérieures, vous pouvez également utiliser une chaîne littérale formatée (f-string). C’est encore plus simple que format().
s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000
s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25
Concaténer une liste de chaînes en une seule :join()
Vous pouvez concaténer une liste de chaînes en une seule chaîne avec la méthode de chaîne, join().
Appelez la méthode join() à partir de ‘Chaîne à insérer’ et passez [Liste des chaînes].
'String to insert'.join([List of strings])
Si vous utilisez une chaîne vide », [Liste de chaînes] est simplement concaténée, et si vous utilisez une virgule ,, cela crée une chaîne délimitée par des virgules. Si un caractère de saut de ligne n est utilisé, un saut de ligne sera inséré pour chaque chaîne.
l = ['aaa', 'bbb', 'ccc']
s = ''.join(l)
print(s)
# aaabbbccc
s = ','.join(l)
print(s)
# aaa,bbb,ccc
s = '-'.join(l)
print(s)
# aaa-bbb-ccc
s = 'n'.join(l)
print(s)
# aaa
# bbb
# ccc
Notez que d’autres objets itérables tels que les tuples peuvent être spécifiés comme arguments de join().
Utilisez split() pour diviser une chaîne séparée par un délimiteur spécifique et l’obtenir sous forme de liste. Voir l’article suivant pour plus de détails.
Concaténer une liste de nombres en une seule chaîne :join(), str()
Si vous définissez une liste non-chaîne sur join(), une erreur est générée.
l = [0, 1, 2]
# s="-".join(l)
# TypeError: sequence item 0: expected str instance, int found
Si vous souhaitez concaténer une liste de nombres (int ou float) en une seule chaîne, appliquez la fonction str() à chaque élément de la compréhension de la liste pour convertir les nombres en chaînes, puis concaténez-les avec join().
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
Il peut être écrit comme une expression génératrice, une version génératrice des compréhensions de liste. Les expressions de générateur sont entre parenthèses (), mais vous pouvez omettre () si l’expression de générateur est le seul argument d’une fonction ou d’une méthode.
s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2
s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2
En général, les expressions génératrices ont l’avantage d’une utilisation réduite de la mémoire par rapport aux compréhensions de liste. Cependant, puisque join() convertit en interne un générateur en une liste, il n’y a aucun avantage à utiliser des expressions de générateur.
Consultez l’article suivant pour plus de détails sur les compréhensions de liste et les expressions de générateur.