Imprimir, concatenar, dividir, eliminar y reemplazar cadenas que contengan nuevas líneas en Python

Negocio

A continuación se describe el funcionamiento de las cadenas que contienen nuevas líneas en Python.

  • Crear una cadena que contenga nuevas líneas, imprimir la salida (mostrar)
    • carácter de nueva línea (uno o ambos CR y LF según el sistema)\n(LF), \r\n(CR+LF)
    • triple cotización''',"""
    • Si quiere hacer una sangría
  • Concatenar una lista de cadenas con nuevas líneas
  • Dividir la cadena en nuevas líneas y lista:splitlines()
  • Eliminar y sustituir los códigos de avance de línea
  • Imprimir la salida sin la nueva línea final

Crear una cadena que contenga nuevas líneas, imprimir la salida

carácter de nueva línea (uno o ambos CR y LF según el sistema) \n(LF), \r\n(CR+LF)

La inserción de un código de avance de línea dentro de una cadena dará lugar a una nueva línea.

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

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

Los códigos de salto de línea pueden utilizarse de las siguientes maneras. Algunos editores permiten seleccionar un código de salto de línea.

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

triple cotización ''',"""

Si se utilizan comillas triples para encerrar la cadena, ésta será una cadena tal cual, incluyendo las nuevas líneas.

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

Si quiere hacer una sangría

Las comillas triples también son espacios en una cadena, por lo que si se intenta escribir de forma ordenada en el código y con sangría como se muestra a continuación, se insertarán espacios innecesarios.

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

Utilizando una barra invertida para ignorar las nuevas líneas en el código y convertirlo en una línea de continuación, se puede escribir como sigue

Encierra cada línea con '' o «» y añade un carácter de nueva línea ←n el final de la frase.

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

En este caso, la sintaxis es que los literales de cadena sucesivos se concatenan. Véase el siguiente artículo para más detalles.

Si quieres añadir sangría en una cadena, sólo tienes que añadir un espacio a la cadena en cada línea.

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

Además, como los saltos de línea pueden hacerse libremente en los paréntesis, lo siguiente puede escribirse utilizando paréntesis en lugar de barras invertidas.

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

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

Si sólo quiere alinear el principio de una línea, sólo tiene que añadir una barra invertida a la primera línea de comillas triples.

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

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

Concatenar una lista de cadenas con nuevas líneas

El método de cadenas join() puede utilizarse para concatenar una lista de cadenas en una única cadena.

Cuando se llama a join() desde un carácter de nueva línea, cada elemento de la cadena se concatena con una nueva línea.

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'

Como en el ejemplo anterior, la función incorporada repr() puede utilizarse para comprobar las cadenas que contienen códigos de nueva línea tal cual.

Dividir la cadena en nuevas líneas y lista: splitlines()

El método de cadena splitlines() puede utilizarse para dividir una cadena en una lista de nuevas líneas.

splitlines() dividirá cualquiera de los siguientes códigos de salto de línea. Los tabuladores verticales y los saltos de página también se dividen.

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

Eliminar y sustituir los códigos de avance de línea

Combinando splitlines() y join(), es posible eliminar (quitar) los códigos de las nuevas líneas de una cadena que contenga nuevas líneas o sustituirlas por otras.

s = 'Line1\nLine2\r\nLine3'

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

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

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

También es posible cambiar por lotes los códigos de salto de línea. Incluso si los códigos de salto de línea están mezclados o son desconocidos, pueden dividirse utilizando splitlines() y luego concatenarse con el código de salto de línea deseado.

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

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

Como se ha mencionado anteriormente, splitlines() dividirá cualquier código de nueva línea, por lo que no es necesario preocuparse especialmente por los códigos de nueva línea en el caso del método que combina splitlines() y join().

Si el código de la nueva línea es claro, también puede ser reemplazado por el método replace(), que reemplaza la cadena.

s = 'Line1\nLine2\nLine3'

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

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

Tenga en cuenta, sin embargo, que no funcionará si contiene códigos de avance de línea diferentes a los esperados.

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'

Es posible reemplazar múltiples códigos de nueva línea repitiendo replace(), pero no funcionará si el orden es incorrecto porque «\r\n» contiene «\n». El método que combina splitlines() y join() descrito anteriormente es más seguro porque no hay que preocuparse por los códigos de salto de línea.

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

Utilice el método rstrip() para eliminar los códigos de salto de línea al final de una frase. rstrip() es un método para eliminar los caracteres de espacio en blanco (incluyendo los saltos de línea) en el extremo derecho de una cadena.

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

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

Imprimir la salida sin la nueva línea final

La función print() añade por defecto una nueva línea al final. Por lo tanto, si print() se ejecuta sucesivamente, cada resultado de salida se mostrará en una nueva línea.

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

Esto se debe a que el valor por defecto del argumento end de print(), que especifica la cadena a añadir al final, es el símbolo de la nueva línea.

Si no quiere una nueva línea al final, sólo tiene que poner el argumento end en una cadena vacía, y la salida se producirá sin una nueva línea al final.

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

El argumento end puede ser cualquier cadena.

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

Sin embargo, si quiere concatenar cadenas para la salida, es más fácil concatenar las cadenas originales que especificarlas en el argumento final de print(). Consulte el siguiente artículo.

Copied title and URL