A continuación descríbese o funcionamento das cadeas que conteñen novas liñas en Python.
- Crear cadea que contén novas liñas, saída de impresión (visualización)
- carácter de nova liña (CR e LF ou ambos segundo o sistema)
\n
(LF),\r\n
(CR+LF) - comiña triple
''
,"""
- Se queres sangrar
- carácter de nova liña (CR e LF ou ambos segundo o sistema)
- Concatena unha lista de cadeas con novas liñas
- Divide a cadea en novas liñas e lista:
splitlines()
- Eliminar e substituír os códigos de alimentación de liña
- Saída de impresión sen nova liña final
Crear cadea que conteña novas liñas, imprimir saída
carácter de nova liña (CR e LF ou ambos segundo o sistema)\n(LF),\r\n(CR+LF)
Ao inserir un código de avance de liña dentro dunha cadea dará lugar a unha nova liña.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Os códigos de alimentación de liña pódense usar dos seguintes xeitos. Algúns editores permítenche seleccionar un código de salto de liña.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
comiña triple'',"""
Se se usan comiñas triples para encerrar a cadea, será unha cadea tal e como está, incluíndo novas liñas.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Se queres sangrar
As comiñas triples tamén son espazos nunha cadea, polo que se tentas escribir ben no código e sangría como se mostra a continuación, inseriranse espazos innecesarios.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Usando unha barra invertida para ignorar as novas liñas no código e convertelo nunha liña de continuación, pódese escribir do seguinte xeito
Engade cada liña con ” ou “” e engade un carácter de nova liña ←n ao final da frase.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Aquí, a sintaxe é que os sucesivos literais de cadea están concatenados. Consulte o seguinte artigo para obter máis detalles.
- Artigos relacionados:Concatenación e unión de cadeas en Python (operador +, unión, etc.)
Se queres engadir sangría nunha cadea, só tes que engadir un espazo á cadea en cada liña.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Ademais, dado que os saltos de liña pódense facer libremente entre corchetes, o seguinte pódese escribir usando parénteses 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
Se só queres aliñar o comezo dunha liña, engade unha barra invertida á primeira liña de comiñas triplas.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Concatena unha lista de cadeas con novas liñas
O método de cadea join() pódese usar para concatenar unha lista de cadeas nunha única cadea.
- Artigos relacionados:Concatenación e unión de cadeas en Python (operador +, unión, etc.)
Cando se chama join() desde un carácter de nova liña, cada elemento de cadea concatenase cunha nova liña.
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 no exemplo anterior, a función incorporada repr() pódese usar para comprobar as cadeas que conteñan códigos de nova liña tal e como son.
Divide a cadea en novas liñas e lista:splitlines()
O método de cadea splitlines() pódese usar para dividir unha cadea nunha lista de novas liñas.
splitlines() dividirá calquera dos seguintes códigos de salto de liña. Tamén se dividen as pestanas verticais e os saltos de páxina.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Eliminar e substituír os códigos de alimentación de liña
Ao combinar splitlines() e join(), é posible eliminar (eliminar) códigos de nova liña dunha cadea que conteña novas liñas ou substituílos por outras cadeas.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
Tamén é posible o cambio por lotes dos códigos de alimentación de liña. Aínda que os códigos de salto de liña sexan mesturados ou descoñecidos, pódense dividir usando splitlines() e despois concatenalos co código de quebra de liña desexado.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Como se mencionou anteriormente, splitlines() dividirá calquera código de nova liña, polo que non hai que preocuparse especialmente polos códigos de nova liña no caso do método que combina splitlines() e join().
Se o código de nova liña está claro, tamén se pode substituír polo método substituír(), que substitúe a cadea.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Teña en conta, non obstante, que non funcionará se contén códigos de avance de liña diferentes dos 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'
É posible substituír varios códigos de nova liña repetindo substituír(), pero non funcionará se a orde é incorrecta porque “\r\n” contén “\n”. O método que combina splitlines() e join() descrito anteriormente é máis seguro porque non hai que preocuparse polos códigos de avance de liña.
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
Use o método rstrip() para eliminar os códigos de avance de liña ao final dunha frase. rstrip() é un método para eliminar os espazos en branco (incluídos os avances de liña) no extremo dereito dunha cadea.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Saída de impresión sen nova liña final
A función print() engade unha nova liña ao final por defecto. Polo tanto, se se executa sucesivamente print(), cada resultado de saída mostrarase nunha nova liña.
print('a')
print('b')
print('c')
# a
# b
# c
Isto ocorre porque o valor predeterminado do argumento end of print(), que especifica a cadea que se engadirá ao final, é o símbolo de nova liña.
Se non queres unha nova liña ao final, só tes que establecer o argumento end nunha cadea baleira e a saída sairá sen unha nova liña ao final.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
O argumento end pode ser calquera cadea.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Non obstante, se queres concatenar cadeas para a saída, é máis fácil concatenar as cadeas orixinais que especificalas no argumento final de print(). Consulta o seguinte artigo.
- Artigos relacionados:Concatenación e unión de cadeas en Python (operador +, unión, etc.)