În cele ce urmează este descrisă funcționarea în Python a șirurilor de caractere care conțin linii noi.
- Creați un șir de caractere care conține linii noi, imprimați ieșirea (afișare)
- caracter de linie nouă (CR și LF sau ambele, în funcție de sistem)
\n
(LF),\r\n
(CR+LF) - citat triplu
'''
,"""
- Dacă doriți să indentați
- caracter de linie nouă (CR și LF sau ambele, în funcție de sistem)
- Concatenează o listă de șiruri de caractere cu linii noi
- Împarte șirul în linii noi și listă:
splitlines()
- Îndepărtarea și înlocuirea codurilor de alimentare a liniei
- Imprimă ieșirea fără linia nouă la sfârșit
Creați un șir de caractere care conține linii noi, imprimați ieșirea
caracter de linie nouă (CR și LF sau ambele, în funcție de sistem) \n(LF), \r\n(CR+LF)
Inserarea unui cod de salt de linie în interiorul unui șir de caractere va avea ca rezultat o nouă linie.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Codurile de avans de linie pot fi utilizate în următoarele moduri. Unii editori vă permit să selectați un cod de întrerupere a liniei.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
citat triplu ''',"""
În cazul în care se utilizează ghilimele triple pentru a include șirul, acesta va fi un șir ca atare, inclusiv liniile noi.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Dacă doriți să indentați
Ghilimelele triple sunt, de asemenea, spații într-un șir de caractere, astfel încât, dacă încercați să scrieți ordonat în cod și să indentați așa cum se arată mai jos, vor fi inserate spații inutile.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Utilizând o backslash pentru a ignora liniile noi din cod și pentru a face din aceasta o linie de continuare, se poate scrie după cum urmează
Închideți fiecare rând cu '' sau „” și adăugați un caracter de linie nouă ←n la sfârșitul propoziției.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
În acest caz, sintaxa constă în concatenarea șirurilor literale succesive. Pentru detalii, consultați următorul articol.
- Articole conexe:Concatenarea și îmbinarea șirurilor de caractere în Python (operatorul +, join, etc.)
Dacă doriți să adăugați o indentare într-un șir de caractere, adăugați un spațiu la fiecare rând.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
În plus, având în vedere că în paranteze se pot face libere întreruperi de linie, ceea ce urmează poate fi scris folosind paranteze în loc de backslash-uri.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Dacă doriți doar să aliniați începutul unei linii, adăugați doar o backslash la prima linie de ghilimele triple.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Concatenează o listă de șiruri de caractere cu linii noi
Metoda join() poate fi utilizată pentru a concatena o listă de șiruri de caractere într-un singur șir.
- Articole conexe:Concatenarea și îmbinarea șirurilor de caractere în Python (operatorul +, join, etc.)
Atunci când join() este apelat de la un caracter de linie nouă, fiecare element de șir este concatenat cu o linie nouă.
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'
La fel ca în exemplul de mai sus, funcția încorporată repr() poate fi utilizată pentru a verifica șirurile de caractere care conțin coduri newline așa cum sunt ele.
Împarte șirul în linii noi și listă: splitlines()
Metoda string splitlines() poate fi utilizată pentru a împărți un șir de caractere într-o listă de linii noi.
splitlines() va diviza oricare dintre următoarele coduri de întrerupere a liniei. Tabulatoarele verticale și pauzele de pagină sunt, de asemenea, divizate.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Îndepărtarea și înlocuirea codurilor de alimentare a liniei
Prin combinarea splitlines() și join(), este posibilă eliminarea (înlăturarea) codurilor de linii noi dintr-un șir care conține linii noi sau înlocuirea acestora cu alte șiruri.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
De asemenea, este posibilă modificarea pe loturi a codurilor de avansare a liniei. Chiar dacă codurile de întrerupere a liniei sunt amestecate sau necunoscute, acestea pot fi împărțite cu ajutorul funcției splitlines() și apoi concatenate cu codul de întrerupere a liniei dorit.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
După cum s-a menționat mai sus, splitlines() va despărți orice cod newline, astfel încât nu este necesar să ne preocupăm în mod special de codurile newline în cazul metodei care combină splitlines() și join().
În cazul în care codul newline este clar, acesta poate fi, de asemenea, înlocuit prin metoda replace(), care înlocuiește șirul.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Cu toate acestea, rețineți că nu va funcționa dacă conține coduri de avans de linie diferite de cele așteptate.
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'
Este posibil să se înlocuiască mai multe coduri de linie nouă prin repetarea replace(), dar nu va funcționa dacă ordinea este greșită, deoarece „\r\n” conține „\n”. Metoda care combină splitlines() și join() descrisă mai sus este mai sigură, deoarece nu este nevoie să vă faceți griji cu privire la codurile de avans de linie.
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
Utilizați metoda rstrip() pentru a elimina codurile de salt de linie de la sfârșitul unei propoziții. rstrip() este o metodă de eliminare a caracterelor de spațiu alb (inclusiv salturile de linie) de la capătul drept al unui șir de caractere.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Imprimă ieșirea fără linia nouă la sfârșit
Funcția print() adaugă în mod implicit o linie nouă la sfârșit. Prin urmare, dacă print() este executată succesiv, fiecare rezultat va fi afișat pe o linie nouă.
print('a')
print('b')
print('c')
# a
# b
# c
Acest lucru se datorează faptului că valoarea implicită a argumentului end din print(), care specifică șirul de caractere care urmează să fie adăugat la sfârșit, este simbolul newline.
Dacă nu doriți o linie nouă la sfârșit, este suficient să setați argumentul end la un șir de caractere gol, iar rezultatul va fi afișat fără o linie nouă la sfârșit.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Argumentul end poate fi orice șir de caractere.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Cu toate acestea, dacă doriți să concatenați șiruri de caractere pentru ieșire, este mai ușor să concatenați șirurile originale decât să le specificați în argumentul final al print(). Consultați următorul articol.