Skip to content

Concaténation de chaînes de caractères en Python (opérateur +, jointure, etc.)

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.