Afficher, concaténer, diviser, supprimer et remplacer des chaînes de caractères contenant des nouvelles lignes en Python

Affaires

Ce qui suit décrit le fonctionnement des chaînes de caractères contenant des nouvelles lignes en Python.

  • Créer une chaîne de caractères contenant des nouvelles lignes, imprimer la sortie (affichage)
    • caractère de nouvelle ligne (CR ou LF, ou les deux, selon le système)\n(LF), \r\n(CR+LF)
    • triple devis''',"""
    • Si vous voulez mettre en retrait
  • Concaténation d'une liste de chaînes de caractères avec des nouvelles lignes
  • Divise la chaîne de caractères en nouvelles lignes et en liste:splitlines()
  • Retirer et remplacer les codes d'alimentation de la ligne
  • Imprimer la sortie sans nouvelle ligne de fin

Créer une chaîne de caractères contenant des nouvelles lignes, imprimer la sortie

caractère de nouvelle ligne (CR ou LF, ou les deux, selon le système) \n(LF), \r\n(CR+LF)

L'insertion d'un code de saut de ligne dans une chaîne de caractères entraîne l'apparition d'une nouvelle ligne.

s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3

s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3

Les codes de saut de ligne peuvent être utilisés de la manière suivante. Certains éditeurs vous permettent de sélectionner un code de saut de ligne.

Macを含むUnix系\n(LF)
Windows系\r\n(CR+LF)

triple devis ''',"""

Si des guillemets triples sont utilisés pour entourer la chaîne, celle-ci sera une chaîne telle quelle, y compris les nouvelles lignes.

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

Si vous voulez mettre en retrait

Les guillemets triples sont également des espaces dans une chaîne de caractères. Par conséquent, si vous essayez d'écrire proprement en code et d'indenter comme indiqué ci-dessous, des espaces inutiles seront insérés.

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

En utilisant un antislash pour ignorer les nouvelles lignes dans le code et en faire une ligne de continuation, on peut l'écrire comme suit

Encadrez chaque ligne par '' ou “” et ajoutez un caractère de fin de ligne ←n à la fin de la phrase.

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

Ici, la syntaxe est que les littéraux de chaîne successifs sont concaténés. Voir l'article suivant pour plus de détails.

Si vous voulez ajouter une indentation dans une chaîne, il suffit d'ajouter un espace à la chaîne à chaque ligne.

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

En outre, comme les sauts de ligne peuvent être effectués librement dans les parenthèses, ce qui suit peut être écrit en utilisant des parenthèses au lieu de backslashes.

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

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

Si vous souhaitez simplement aligner le début d'une ligne, il suffit d'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énation d'une liste de chaînes de caractères avec des nouvelles lignes

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.

Lorsque join() est appelé à partir d'un caractère de nouvelle ligne, chaque élément de la chaîne est concaténé avec une nouvelle ligne.

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

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

print(repr(s_n))
# 'Line1\nLine2\nLine3'

s_rn = '\r\n'.join(l)
print(s_rn)
# Line1
# Line2
# Line3

print(repr(s_rn))
# 'Line1\r\nLine2\r\nLine3'

Comme dans l'exemple ci-dessus, la fonction intégrée repr() peut être utilisée pour vérifier les chaînes de caractères qui contiennent des codes de nouvelle ligne tels qu'ils sont.

Divise la chaîne de caractères en nouvelles lignes et en liste: splitlines()

La méthode de chaîne de caractères splitlines() peut être utilisée pour diviser une chaîne de caractères en une liste de nouvelles lignes.

splitlines() divisera n'importe lequel des codes de saut de ligne suivants. Les onglets verticaux et les sauts de page sont également divisés.

  • \n
  • \r\n
  • \v
  • \f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']

Retirer et remplacer les codes d'alimentation de la ligne

En combinant splitlines() et join(), il est possible de supprimer (enlever) les codes de nouvelles lignes d'une chaîne contenant des nouvelles lignes ou de les remplacer par d'autres chaînes.

s = 'Line1\nLine2\r\nLine3'

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

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

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

Le changement par lots des codes de saut de ligne est également possible. Même si les codes de saut de ligne sont mélangés ou inconnus, ils peuvent être divisés à l'aide de splitlines() et ensuite concaténés avec le code de saut de ligne souhaité.

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

print(repr(s_n))
# 'Line1\nLine2\nLine3'

Comme mentionné ci-dessus, splitlines() divisera n'importe quel code de ligne, il n'y a donc pas besoin de se préoccuper particulièrement des codes de ligne dans le cas de la méthode combinant splitlines() et join().

Si le code de nouvelle ligne est clair, il peut également être remplacé par la méthode replace(), qui remplace la chaîne de caractères.

s = 'Line1\nLine2\nLine3'

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

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

Notez toutefois qu'il ne fonctionnera pas s'il contient des codes de saut de ligne différents de ceux attendus.

s = 'Line1\nLine2\r\nLine3'

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

print(repr(s_error))
# 'Line1,Line2\r,Line3'

s_error = s.replace('\r\n', ',')
print(s_error)
# Line1
# Line2,Line3

print(repr(s_error))
# 'Line1\nLine2,Line3'

Il est possible de remplacer plusieurs codes de saut de ligne en répétant replace(), mais cela ne fonctionnera pas si l'ordre est incorrect car “\r\n” contient “\n”. La méthode combinant splitlines() et join() décrite ci-dessus est plus sûre car il n'est pas nécessaire de se préoccuper des codes de saut de ligne.

s = 'Line1\nLine2\r\nLine3'

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

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

print(repr(s_error))
# 'Line1,Line2\r,Line3'

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

Utilisez la méthode rstrip() pour supprimer les codes de saut de ligne à la fin d'une phrase. rstrip() est une méthode permettant de supprimer les caractères d'espace blanc (y compris les sauts de ligne) à l'extrémité droite d'une chaîne.

s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb

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

Imprimer la sortie sans nouvelle ligne de fin

La fonction print() ajoute une nouvelle ligne par défaut. Par conséquent, si print() est exécutée successivement, chaque résultat de sortie sera affiché sur une nouvelle ligne.

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

En effet, la valeur par défaut de l'argument end de print(), qui spécifie la chaîne à ajouter à la fin, est le symbole de la nouvelle ligne.

Si vous ne voulez pas de nouvelle ligne à la fin, il suffit de définir l'argument end à une chaîne vide, et la sortie sera produite sans nouvelle ligne à la fin.

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

L'argument end peut être une chaîne quelconque.

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

Cependant, si vous voulez concaténer des chaînes de caractères pour la sortie, il est plus facile de concaténer les chaînes originales que de les spécifier dans l'argument final de print(). Voir l'article suivant.