Skip to content

Gérer les sauts de ligne (newlines) en Python

Cet article décrit comment gérer les chaînes, y compris les sauts de ligne (sauts de ligne, nouvelles lignes) en Python.

  • Créer une chaîne contenant des sauts de ligne
    • Code de saut de ligne n(LF), rn(CR + LF)
    • Guillemet triple  »’ ou «  » »
    • Avec retrait
  • Concaténer une liste de chaînes sur de nouvelles lignes
  • Divisez une chaîne en une liste par des sauts de ligne :splitlines()
  • Supprimer ou remplacer les sauts de ligne
  • Sortie avec print() sans nouvelle ligne de fin

Créer une chaîne contenant des sauts de ligne

Code de saut de ligne n(LF), rn(CR + LF)

L’insertion d’un code de retour à la ligne n, rn dans une chaîne entraînera un saut de ligne à cet emplacement.

s = 'Line1nLine2nLine3'
print(s)
# Line1
# Line2
# Line3

s = 'Line1rnLine2rnLine3'
print(s)
# Line1
# Line2
# Line3

Sous Unix, y compris Mac, n (LF) est souvent utilisé, et sous Windows, rn (CR + LF) est souvent utilisé comme code de retour à la ligne. Certains éditeurs de texte vous permettent de sélectionner un code de retour à la ligne.

Guillemet triple  »’, «  » »

Vous pouvez écrire une chaîne incluant des sauts de ligne avec des guillemets triples  »’ ou «  » ».

s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3

Avec retrait

Si vous utilisez des guillemets triples et un retrait, comme indiqué ci-dessous, des espaces inutiles sont insérés.

s = '''
    Line1
    Line2
    Line3
    '''
print(s)
# 
#     Line1
#     Line2
#     Line3
#     

En encadrant chaque ligne entre  » ou «  », en ajoutant un saut de ligne n à la fin et en utilisant une barre oblique inverse, vous pouvez écrire comme suit :

s = 'Line1n'
    'Line2n'
    'Line3'
print(s)
# Line1
# Line2
# Line3

Il utilise un mécanisme dans lequel des littéraux de chaîne consécutifs sont concaténés. Voir l’article suivant pour plus de détails.

Si vous souhaitez ajouter une indentation dans la chaîne, ajoutez un espace à la chaîne sur chaque ligne.

s = 'Line1n'
    '    Line2n'
    '        Line3'
print(s)
# Line1
#     Line2
#         Line3

Comme vous pouvez librement couper les lignes entre parenthèses (), vous pouvez également écrire comme suit en utilisant des parenthèses () sans utiliser de barres obliques inverses.

s = ('Line1n'
     'Line2n'
     'Line3')
print(s)
# Line1
# Line2
# Line3

s = ('Line1n'
     '    Line2n'
     '        Line3')
print(s)
# Line1
#     Line2
#         Line3

Si vous souhaitez simplement aligner le début d’une ligne, vous pouvez ajouter une barre oblique inverse à la première ligne de guillemets triples.

s = '''
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3

s = '''
Line1
    Line2
        Line3'''
print(s)
# Line1
#     Line2
#         Line3

Concaténer une liste de chaînes sur de nouvelles lignes

Vous pouvez concaténer une liste de chaînes en une seule chaîne avec la méthode de chaîne, join().

En appelant join() à partir d’un code de nouvelle ligne n ou rn, chaque élément est concaténé sur de nouvelles lignes.

l = ['Line1', 'Line2', 'Line3']

s_n = 'n'.join(l)
print(s_n)
# Line1
# Line2
# Line3

print(repr(s_n))
# 'Line1nLine2nLine3'

s_rn = 'rn'.join(l)
print(s_rn)
# Line1
# Line2
# Line3

print(repr(s_rn))
# 'Line1rnLine2rnLine3'

Comme dans l’exemple ci-dessus, vous pouvez vérifier la chaîne avec des codes de saut de ligne intacts avec la fonction intégrée repr().

Divisez une chaîne en une liste par des sauts de ligne :splitlines()

Vous pouvez diviser une chaîne par des sauts de ligne dans une liste avec la méthode de chaîne, splitlines().

s = 'Line1nLine2rnLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']

En plus de n et rn, il est également divisé par v (tabulation de lignes) ou f (saut de page), etc.

Voir aussi l’article suivant pour plus d’informations sur splitlines().

Supprimer ou remplacer les sauts de ligne

Avec splitlines() et join(), vous pouvez supprimer les codes de nouvelle ligne d’une chaîne ou les remplacer par une autre chaîne.

s = 'Line1nLine2rnLine3'

print(''.join(s.splitlines()))
# Line1Line2Line3

print(' '.join(s.splitlines()))
# Line1 Line2 Line3

print(','.join(s.splitlines()))
# Line1,Line2,Line3

Il est également possible de modifier le code de saut de ligne immédiatement. Même si le code de nouvelle ligne est mixte ou inconnu, vous pouvez le diviser avec splitlines() puis les concaténer avec le code souhaité.

s_n = 'n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3

print(repr(s_n))
# 'Line1nLine2nLine3'

Étant donné que splitlines() divise à la fois n (LF) et rn (CR + LF) comme mentionné ci-dessus, vous n’avez pas à vous soucier du code de saut de ligne utilisé dans la chaîne.

Vous pouvez également remplacer le code de saut de ligne replace().

s = 'Line1nLine2nLine3'

print(s.replace('n', ''))
# Line1Line2Line3

print(s.replace('n', ','))
# Line1,Line2,Line3

Cependant, notez que cela ne fonctionnera pas s’il contient un code de nouvelle ligne différent de celui attendu.

s = 'Line1nLine2rnLine3'

s_error = s.replace('n', ',')
print(s_error)
# ,Line3Line2

print(repr(s_error))
# 'Line1,Line2r,Line3'

s_error = s.replace('rn', ',')
print(s_error)
# Line1
# Line2,Line3

print(repr(s_error))
# 'Line1nLine2,Line3'

Vous pouvez répéter replace() pour remplacer plusieurs codes de nouvelle ligne, mais comme rn contient n, cela ne fonctionne pas bien si vous le faites dans le mauvais ordre. Comme mentionné ci-dessus, l’utilisation de splitlines() et join() est sûre car vous n’avez pas à vous soucier des codes de saut de ligne.

s = 'Line1nLine2rnLine3'

print(s.replace('rn', ',').replace('n', ','))
# Line1,Line2,Line3

s_error = s.replace('n', ',').replace('rn', ',')
print(s_error)
# ,Line3Line2

print(repr(s_error))
# 'Line1,Line2r,Line3'

print(','.join(s.splitlines()))
# Line1,Line2,Line3

Vous pouvez utiliser rstrip() pour supprimer le code de fin de ligne.

s = 'aaan'
print(s + 'bbb')
# aaa
# bbb

print(s.rstrip() + 'bbb')
# aaabbb

Sortie avec print() sans nouvelle ligne de fin

Par défaut, print() ajoute une nouvelle ligne à la fin. Par conséquent, si vous exécutez print() en continu, chaque résultat de sortie sera affiché avec un saut de ligne.

print('a')
print('b')
print('c')
# a
# b
# c

En effet, la valeur par défaut de l’argument end of print(), qui spécifie la chaîne de caractères à ajouter à la fin, est ‘n’.

Si la chaîne vide  » est spécifiée à la fin, un saut de ligne ne se produira pas à la fin.

print('a', end='')
print('b', end='')
print('c', end='')
# abc

N’importe quelle chaîne peut être spécifiée dans end.

print('a', end='-')
print('b', end='-')
print('c')
# a-b-c

Toutefois, si vous souhaitez concaténer les chaînes de caractères et la sortie, il est plus simple de concaténer les chaînes de caractères d’origine. Voir l’article suivant.