Concaténation et jointure de chaînes de caractères en Python : Opérateurs +, fonctions de jonction, etc.

Affaires

Ce qui suit est une description de la manière de concaténer et de joindre des chaînes de caractères en Python.

  • Concaténation et fusion de plusieurs chaînes de caractères: +,+=opérateur
  • Concaténation et combinaison de nombres et de chaînes de caractères: +,+=opérateur,str(),format(),f-chaîne
  • Concaténation et combinaison de listes (tableaux) de chaînes de caractères en une seule chaîne.:join()
  • Concaténation et combinaison de listes (tableaux) de chiffres en une seule chaîne de caractères.:join(),str()

Concaténation et fusion de plusieurs chaînes de caractères: +, +=opérateur

connexion: +opérateur

L'opérateur ++ peut être utilisé pour concaténer les littéraux de chaîne et les variables de chaîne suivants

  • '…'
  • “…”
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

connexion: +=opérateur

L'opérateur +=, un opérateur d'affectation cumulatif, peut également être utilisé. La variable chaîne de caractères de gauche est concaténée avec la chaîne de caractères de droite, puis elle est affectée et mise à jour.

s1 += s2
print(s1)
# aaabbb

Si vous souhaitez ajouter une chaîne à la fin d'une variable de type chaîne, il suffit de traiter la variable de type chaîne et tout littéral de chaîne (ou une autre variable de type chaîne) avec l'opérateur +=.

s = 'aaa'

s += 'xxx'
print(s)
# aaaxxx

Concaténation consécutive de chaînes de caractères littéraux

Si vous écrivez simplement des chaînes littérales côte à côte, elles seront concaténées.

s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc

Il est acceptable d'avoir un espace entre deux lignes ou un retour à la ligne (considéré comme une continuation).

s = 'aaa'  'bbb'    'ccc'
print(s)
# aaabbbccc

s = 'aaa'\
    'bbb'\
    'ccc'
print(s)
# aaabbbccc

Il existe une technique pour utiliser cela afin d'écrire de longues chaînes de caractères sur plusieurs lignes du code.

Cette méthode d'écriture n'est pas possible pour les variables de type chaîne.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Concaténation de chiffres et de chaînes de caractères\concaténation: +,+=opérateur,str(),format(),f-chaîne

Une opération + d'un type différent entraîne 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 valeur numérique (par exemple, de type entier int ou de type à virgule flottante float) avec une chaîne de caractères, convertissez la valeur numérique en un type de chaîne de caractères avec str(), puis concaténer les deux avec l'opérateur + (ou l'opérateur +=).

s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25

Si vous souhaitez convertir le format d'un nombre, comme le remplissage du zéro ou les décimales, utilisez la fonction format() ou la méthode string format().

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 entendu, il est également possible d'intégrer la valeur d'une variable directement dans une chaîne de caractères sans la formater. C'est plus simple à écrire que d'utiliser l'opérateur +.

s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25

Voir l'article suivant pour plus de détails sur la façon de spécifier le format.

Depuis Python 3.6, un mécanisme appelé f-strings (f-string) a également été introduit, qui est encore plus simple à écrire 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énation et jonction de listes (tableaux) de chaînes de caractères: join()

La méthode de chaîne de caractères join() peut être utilisée pour concaténer une liste de chaînes de caractères en une seule chaîne.

Voici comment l'écrire.

'String to be inserted between'.join([List of strings to be concatenated])

Appelez la méthode join() avec la “chaîne à insérer entre” et passez [liste de chaînes à concaténer] comme argument.

Si une chaîne vide est utilisée, [liste des chaînes à concaténer] sera simplement concaténée, si une virgule est utilisée, les chaînes seront séparées par des virgules, et si un caractère de nouvelle ligne est utilisé, chaque élément de chaîne sera souligné.

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

Bien que seul un exemple de liste soit donné ici, d'autres objets itérables tels que les tuples peuvent également être spécifiés comme arguments à join().

Contrairement à join(), split() est utilisé pour diviser une chaîne de caractères délimitée par un délimiteur spécifique et l'obtenir sous forme de liste.

Concaténation et combinaison de listes (tableaux) de nombres sous forme de chaînes de caractères.: join(),str()

Une erreur se produit si l'argument de join() est une liste dont les éléments ne sont pas des chaînes de caractères.

l = [0, 1, 2]

# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found

Pour concaténer une liste de nombres en une seule chaîne de caractères, appliquez la fonction str() à chaque élément de la notation de compréhension de la liste pour convertir les nombres en une chaîne de caractères, puis joignez-les avec join().

s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2

Il peut également être écrit comme une expression de générateur, qui est une version de générateur des compréhensions de liste. Les expressions de générateur sont placées entre parenthèses, mais les parenthèses peuvent être omises 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

Les expressions de générateur ont généralement l'avantage d'utiliser moins de mémoire que les compréhensions de liste, mais il n'y a pas d'avantage particulier à utiliser des expressions de générateur puisque join() convertit les générateurs en listes dans son traitement interne. En fait, il est légèrement plus rapide d'utiliser les compréhensions de listes dès le début.

Pour plus d'informations sur les compréhensions de liste et les expressions de générateur, voir l'article suivant.

Copied title and URL