Sortir, concatenar, dividir, suprimir i substituir cadenes que contenen línies noves a Python

Negocis

A continuació es descriu el funcionament de les cadenes que contenen línies noves a Python.

  • Crea una cadena que contingui noves línies, sortida d’impressió (visualització)
    • caràcter de nova línia (o tots dos de CR i LF segons el sistema)\n(LF),\r\n(CR+LF)
    • cita triple'',"""
    • Si voleu sagnar
  • Concatena una llista de cadenes amb noves línies
  • Divideix la cadena en noves línies i llista:splitlines()
  • Elimineu i substituïu els codis d’alimentació de línia
  • Sortida d’impressió sense cap nova línia final

Creeu una cadena que contingui noves línies, imprimiu la sortida

caràcter de nova línia (o tots dos de CR i LF segons el sistema)\n(LF),\r\n(CR+LF)

Si inseriu un codi d’alimentació de línia dins d’una cadena, es generarà una línia nova.

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

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

Els codis d’alimentació de línia es poden utilitzar de les maneres següents. Alguns editors us permeten seleccionar un codi de salt de línia.

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

cita triple'',"""

Si s’utilitzen cometes triples per incloure la cadena, serà una cadena tal qual, incloses les noves línies.

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

Si voleu sagnar

Les cometes triples també són espais en una cadena, de manera que si proveu d’escriure ordenadament en codi i sagnat com es mostra a continuació, s’inseriran espais innecessaris.

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

Utilitzant una barra invertida per ignorar les noves línies del codi i convertir-lo en una línia de continuació, es pot escriure de la següent manera

Tanca cada línia amb ” o “” i afegeix un caràcter de nova línia ←n al final de la frase.

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

Aquí, la sintaxi és que els literals de cadena successius es concatenen. Consulteu l’article següent per obtenir més informació.

Si voleu afegir sagnat a una cadena, només cal que afegiu un espai a la cadena a cada línia.

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

A més, com que els salts de línia es poden fer lliurement entre claudàtors, el següent es pot escriure utilitzant parèntesis en lloc de barres invertides.

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

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

Si només voleu alinear l’inici d’una línia, només cal que afegiu una barra invertida a la primera línia de cometes triples.

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

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

Concatena una llista de cadenes amb noves línies

El mètode de cadena join() es pot utilitzar per concatenar una llista de cadenes en una única cadena.

Quan es crida join() des d’un caràcter de nova línia, cada element de cadena es concatena amb una nova línia.

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'

Com a l’exemple anterior, la funció integrada repr() es pot utilitzar per comprovar les cadenes que contenen codis de nova línia tal com són.

Divideix la cadena en noves línies i llista:splitlines()

El mètode de cadena splitlines() es pot utilitzar per dividir una cadena en una llista de noves línies.

splitlines() dividirà qualsevol dels següents codis de salt de línia. Les pestanyes verticals i els salts de pàgina també es divideixen.

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

Elimineu i substituïu els codis d’alimentació de línia

Combinant splitlines() i join(), és possible eliminar (eliminar) els codis de nova línia d’una cadena que conté noves línies o substituir-les per altres cadenes.

s = 'Line1\nLine2\r\nLine3'

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

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

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

També és possible el canvi per lots dels codis d’alimentació de línia. Fins i tot si els codis de salt de línia es barregen o es desconeixen, es poden dividir mitjançant splitlines() i després concatenar-los amb el codi de salt de línia desitjat.

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

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

Com s’ha esmentat anteriorment, splitlines() dividirà qualsevol codi de nova línia, de manera que no cal que us preocupeu especialment dels codis de nova línia en el cas del mètode que combina splitlines() i join().

Si el codi de nova línia és clar, també es pot substituir pel mètode replace(), que substitueix la cadena.

s = 'Line1\nLine2\nLine3'

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

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

Tingueu en compte, però, que no funcionarà si conté codis d’alimentació de línia diferents dels esperats.

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'

És possible substituir diversos codis de nova línia repetint replace(), però no funcionarà si l’ordre és incorrecte perquè “\r\n” conté “\n”. El mètode que combina splitlines() i join() descrit anteriorment és més segur perquè no cal preocupar-se pels codis d’alimentació de línia.

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

Utilitzeu el mètode rstrip() per eliminar els codis d’alimentació de línia al final d’una frase. rstrip() és un mètode per eliminar els caràcters d’espai en blanc (inclosos els passos de línia) a l’extrem dret d’una cadena.

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

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

Sortida d’impressió sense cap nova línia final

La funció print() afegeix una nova línia al final de manera predeterminada. Per tant, si s’executa print() de manera consecutiva, cada resultat de sortida es mostrarà en una línia nova.

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

Això es deu al fet que el valor predeterminat de l’argument final de print(), que especifica la cadena que s’ha d’afegir al final, és el símbol de nova línia.

Si no voleu una nova línia al final, només heu d’establir l’argument final en una cadena buida i la sortida es sortirà sense cap nova línia al final.

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

L’argument final pot ser qualsevol cadena.

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

Tanmateix, si voleu concatenar cadenes per a la sortida, és més fàcil concatenar les cadenes originals que especificar-les a l’argument final de print(). Consulteu l’article següent.

Copied title and URL