Skip to content

Gestire le interruzioni di riga (newline) in Python

Python

Questo articolo descrive come gestire le stringhe incluse le interruzioni di riga (feed di riga, nuove righe) in Python.

  • Crea una stringa contenente interruzioni di riga
    • Codice di nuova riga n(LF), rn(CR + LF)
    • Tripla virgoletta ”’ o “””
    • Con tratto
  • Concatena un elenco di stringhe su nuove righe
  • Dividi una stringa in un elenco per interruzioni di riga:splitlines()
  • Rimuovere o sostituire le interruzioni di riga
  • Output con print() senza una nuova riga finale

Crea una stringa contenente interruzioni di riga

Codice di nuova riga n(LF), rn(CR + LF)

L’inserimento di un codice di nuova riga n, rn in una stringa risulterà in un’interruzione di riga in quella posizione.

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

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

Su Unix, incluso Mac, viene spesso utilizzato n (LF) e su Windows, rn (CR + LF) viene spesso utilizzato come codice di nuova riga. Alcuni editor di testo consentono di selezionare un codice di nuova riga.

Virgolette tripla ”’, “””

Puoi scrivere una stringa che includa interruzioni di riga con virgolette triple ”’ o “””.

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

Con tratto

Se si utilizza le virgolette triple e il rientro, come mostrato di seguito, vengono inseriti necessari non spazi.

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

Racchiudendo ogni riga tra ” o “”, aggiungendo un’interruzione di riga n alla fine e usando una barra rovesciata , puoi scrivere come segue:

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

Utilizza un meccanismo in cui le stringhe letterali vengono concatenate. Vedere il seguente articolo per i dettagli.

Se vuoi aggiungere un rientro nella stringa, aggiungi uno spazio alla stringa su ogni riga.

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

Dato che puoi interrompere liberamente le righe tra parentesi (), puoi anche scrivere come usare parentesi () senza usare barre inverse .

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

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

Se vuoi solo allineare l’inizio di una riga, puoi aggiungere una barra rovesciata alla prima riga di virgolette triple.

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

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

Concatena un elenco di stringhe su nuove righe

Puoi concatenare un elenco di stringhe in una singola stringa con il metodo string, join().

Chiamando join() da un codice newline no rn, ogni elemento viene concatenato su nuove righe.

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'

Come nell’esempio sopra, puoi controllare la stringa con i codici di nuova riga intatti con la funzione incorporata repr().

Dividi una stringa in un elenco per interruzioni di riga:splitlines()

Puoi dividere una stringa per il metodo interrotto Puoi dire riga in un elenco con il metodo string, splitlines().

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

Oltre ane rn, è anche diviso per v (tabulazione riga) di (avanzamento modulo), ecc.

Vedere anche il seguente articolo per ulteriori informazioni su splitlines().

Rimuovere o sostituire le interruzioni di riga

Con splitlines() e join(), puoi rimuovere i codici di nuova riga da una stringa o sostituirli con un’altra stringa.

s = 'Line1nLine2rnLine3'

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

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

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

È anche possibile modificare il codice di nuova riga in una volta. Anche se il codice di nuova riga è misto o sconosciuto, puoi dividerlo con splitlines() e quindi concatenarli con il codice desiderato.

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

print(repr(s_n))
# 'Line1nLine2nLine3'

Poiché splitlines() divide sia n (LF) che rn (CR + LF) come menzionato sopra, non devi preoccuparti di quale codice di nuova riga viene utilizzato nella stringa.

Puoi anche sostituire il codice newline replace().

s = 'Line1nLine2nLine3'

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

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

Tuttavia, tieni presente che non funzionerà se contiene un codice di nuova riga diverso da quello previsto.

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'

Puoi ripetere replace() per sostituire più codici di nuova riga, ma poiché rn contiene n, non funziona bene se lo fai nell’ordine sbagliato. Come accennato in precedenza, l’uso di splitlines() e join() è sicuro perché non devi preoccuparti dei codici di avanzamento riga.

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

Puoi usare rstrip() per rimuovere il codice di nuova riga finale.

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

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

Output con print() senza una nuova riga finale

Per impostazione predefinita, print() aggiunge una nuova riga alla fine. Pertanto, se si esegue print() continuamente, ogni risultato di output verrà visualizzato con un’interruzione di riga.

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

Questo perché il valore predefinito dell’argomento end of print(), che specifica la stringa da aggiungere alla fine, è ‘n’.

Se alla fine viene specificata la stringa vuota ”, alla fine non si verificherà un’interruzione di riga.

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

Qualsiasi stringa può essere specificata alla fine.

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

Tuttavia, se si desidera concatenare le stringhe di caratteri e l’output, è più semplice concatenare le stringhe di originali. Vedi il seguente articolo.