Quanto segue descrive il funzionamento delle stringhe contenenti newline in Python.
- Crea una stringa contenente newlines, stampa l'output (display)
- carattere newline (uno o entrambi CR e LF a seconda del sistema)
\n
(LF),\r\n
(CR+LF) - tripla citazione
'''
,"""
- Se volete far rientrare
- carattere newline (uno o entrambi CR e LF a seconda del sistema)
- Concatenare un elenco di stringhe con newline
- Dividere la stringa in newline ed elenco:
splitlines()
- Rimuovere e sostituire i codici di alimentazione di linea
- Stampa l'output senza newline finali
Crea una stringa contenente newlines, stampa l'output
carattere newline (uno o entrambi CR e LF a seconda del sistema) \n(LF), \r\n(CR+LF)
Inserendo un codice di avanzamento di riga all'interno di una stringa si otterrà una nuova riga.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
I codici di interruzione di riga possono essere usati nei seguenti modi. Alcuni editor permettono di selezionare un codice di interruzione di riga.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
tripla citazione ''',"""
Se si usano le virgolette triple per racchiudere la stringa, sarà una stringa così com'è, comprese le newline.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Se volete far rientrare
Le virgolette triple sono anche spazi in una stringa, quindi se cercate di scrivere ordinatamente nel codice e indentate come mostrato qui sotto, verranno inseriti spazi non necessari.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Usando un backslash per ignorare le newline nel codice e renderlo una linea di continuazione, può essere scritto come segue
Chiudi ogni riga con '' o “” e aggiungi un carattere di newline ←n alla fine della frase.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Qui, la sintassi è che i letterali di stringa successivi sono concatenati. Vedi il seguente articolo per i dettagli.
- Articoli correlati:Concatenare e unire stringhe in Python (operatore +, join, ecc.)
Se volete aggiungere l'indentazione in una stringa, aggiungete semplicemente uno spazio alla stringa in ogni riga.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Inoltre, poiché le interruzioni di riga possono essere fatte liberamente nelle parentesi, quanto segue può essere scritto usando le parentesi invece delle backslash.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Se vuoi solo allineare l'inizio di una linea, basta aggiungere un backslash alla prima linea di apici tripli.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Concatenare un elenco di stringhe con newline
Il metodo stringa join() può essere usato per concatenare una lista di stringhe in una singola stringa.
- Articoli correlati:Concatenare e unire stringhe in Python (operatore +, join, ecc.)
Quando join() viene chiamata da un carattere newline, ogni elemento della stringa viene concatenato con un newline.
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'
Come nell'esempio precedente, la funzione incorporata repr() può essere usata per controllare le stringhe che contengono codici newline così come sono.
Dividere la stringa in newline ed elenco: splitlines()
Il metodo di stringa splitlines() può essere usato per dividere una stringa in una lista di newlines.
splitlines() dividerà uno qualsiasi dei seguenti codici di interruzione di riga. Anche le tabulazioni verticali e le interruzioni di pagina vengono divise.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Rimuovere e sostituire i codici di alimentazione di linea
Combinando splitlines() e join(), è possibile rimuovere (eliminare) i codici newline da una stringa contenente newline o sostituirli con altre stringhe.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
È anche possibile cambiare in batch i codici di interruzione di linea. Anche se i codici di interruzione di linea sono misti o sconosciuti, possono essere divisi usando splitlines() e poi concatenati con il codice di interruzione di linea desiderato.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Come detto sopra, splitlines() dividerà entrambi i codici newline, quindi non c'è bisogno di preoccuparsi particolarmente dei codici newline nel caso del metodo che combina splitlines() e join().
Se il codice newline è chiaro, può anche essere sostituito dal metodo replace(), che sostituisce la stringa.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Notate, tuttavia, che non funzionerà se contiene codici di avanzamento di linea diversi da quelli previsti.
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'
È possibile sostituire più codici newline ripetendo replace(), ma non funzionerà se l'ordine è sbagliato perché “\r\n” contiene “\n”. Il metodo che combina splitlines() e join() descritto sopra è più sicuro perché non c'è bisogno di preoccuparsi dei codici di linea.
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
Usate il metodo rstrip() per rimuovere i codici di avanzamento di riga alla fine di una frase. rstrip() è un metodo per rimuovere i caratteri di spazio bianco (inclusi i feed di riga) alla fine destra di una stringa.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Stampa l'output senza newline finali
La funzione print() aggiunge un newline finale per impostazione predefinita. Pertanto, se print() viene eseguita in successione, ogni risultato di output sarà visualizzato su una nuova riga.
print('a')
print('b')
print('c')
# a
# b
# c
Questo perché il valore predefinito dell'argomento end di print(), che specifica la stringa da aggiungere alla fine, è il simbolo newline.
Se non volete una newline alla fine, impostate semplicemente l'argomento end a una stringa vuota, e l'output verrà emesso senza una newline alla fine.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
L'argomento end può essere una qualsiasi stringa.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Tuttavia, se volete concatenare delle stringhe per l'output, è più facile concatenare le stringhe originali che specificarle nell'argomento finale di print(). Vedere il seguente articolo.
- Articoli correlati:Concatenare e unire stringhe in Python (operatore +, join, ecc.)