Sljedeće opisuje rad nizova koji sadrže nove redove u Pythonu.
- Izradite niz koji sadrži nove retke, ispišite izlaz (prikaz)
- znak novog reda (bilo ili oba CR i LF ovisno o sustavu)
\n
(LF),\r\n
(CR+LF) - trostruki citat
''
,"""
- Ako želite uvući
- znak novog reda (bilo ili oba CR i LF ovisno o sustavu)
- Spojite popis nizova s novim redovima
- Podijelite niz na nove retke i popis:
splitlines()
- Uklonite i zamijenite kodove za prijelaz retka
- Ispisni izlaz bez završnog novog retka
Stvorite niz koji sadrži nove retke, ispišite izlaz
znak novog reda (bilo ili oba CR i LF ovisno o sustavu)\n(LF),\r\n(CR+LF)
Umetanje koda za feed unutar niza rezultirat će novim redom.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Kodovi za povlačenje reda mogu se koristiti na sljedeće načine. Neki uređivači vam omogućuju odabir koda prijeloma reda.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
trostruki citat'',"""
Ako se trostruki navodniki koriste za zatvaranje niza, to će biti niz kakav jest, uključujući nove retke.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Ako želite uvući
Trostruki navodnici su također razmaci u nizu, pa ako pokušate uredno pisati u kodu i uvlaci kao što je prikazano u nastavku, umetnut će se nepotrebni razmaci.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Korištenjem obrnute kose crte da zanemarite nove redove u kodu i učinite ga nastavkom, može se napisati na sljedeći način
Zatvorite svaki redak sa ” ili “” i dodajte znak novog retka ←n na kraju rečenice.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Ovdje je sintaksa da se uzastopni literali niza spajaju. Za detalje pogledajte sljedeći članak.
Ako želite dodati uvlačenje u nizu, samo dodajte razmak nizu u svakom retku.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Osim toga, budući da se prijelomi redaka mogu slobodno napraviti u zagradama, sljedeće se može napisati pomoću zagrada umjesto obrnutih kosih crta.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Ako samo želite poravnati početak retka, samo dodajte obrnutu kosu crtu u prvi red trostrukih navodnika.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Spojite popis nizova s novim redovima
Metoda stringova join() može se koristiti za spajanje popisa nizova u jedan niz.
Kada se join() pozove iz znaka za novi redak, svaki element niza se povezuje s novim redom.
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'
Kao u gornjem primjeru, ugrađena funkcija repr() može se koristiti za provjeru nizova koji sadrže kodove za novi red kakvi jesu.
Podijelite niz na nove retke i popis:splitlines()
Metoda stringa splitlines() može se koristiti za podjelu niza na popis novih redaka.
splitlines() će podijeliti bilo koji od sljedećih kodova za prijelom redaka. Vertikalne kartice i prijelomi stranica također su podijeljeni.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Uklonite i zamijenite kodove za prijelaz retka
Kombiniranjem splitlines() i join(), moguće je ukloniti (ukloniti) kodove za novi red iz niza koji sadrži nove retke ili ih zamijeniti drugim nizovima.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
Moguća je i serijska promjena kodova za pomicanje redaka. Čak i ako su kodovi prijeloma reda mješoviti ili nepoznati, mogu se podijeliti pomoću splitlines(), a zatim spojiti sa željenim kodom prijeloma reda.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Kao što je gore spomenuto, splitlines() će podijeliti bilo koji kod za novi redak, tako da nema potrebe biti posebno zabrinuti oko kodova za novi red u slučaju metode koja kombinira splitlines() i join().
Ako je kod za novi red jasan, također se može zamijeniti metodom replace() koja zamjenjuje niz.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Međutim, imajte na umu da neće raditi ako sadrži različite kodove za prijelaz retka od očekivanih.
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'
Moguće je zamijeniti više kodova za novi red ponavljanjem replace(), ali neće raditi ako je redoslijed pogrešan jer “\r\n” sadrži “\n”. Gore opisana metoda kombiniranja splitlines() i join() sigurnija je jer nema potrebe za brigom o kodovima za pomicanje redaka.
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
Upotrijebite metodu rstrip() za uklanjanje kodova za prijelaz retka na kraju rečenice. rstrip() je metoda za uklanjanje znakova razmaka (uključujući prijevode reda) na desnom kraju niza.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Ispisni izlaz bez završnog novog retka
Funkcija print() prema zadanim postavkama dodaje završni novi redak. Stoga, ako se print() izvršava uzastopno, svaki izlazni rezultat bit će prikazan u novom retku.
print('a')
print('b')
print('c')
# a
# b
# c
To je zato što je zadana vrijednost argumenta end print(), koji specificira niz koji se dodaje na kraju, simbol novog reda.
Ako ne želite novi redak na kraju, samo postavite kraj argumenta na prazan niz, a izlaz će biti ispisan bez novog retka na kraju.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Kraj argumenta može biti bilo koji niz.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Međutim, ako želite spojiti nizove za izlaz, lakše je spojiti izvorne nizove nego ih navesti u završnom argumentu print(). Pogledajte sljedeći članak.