Izlaz, spojiti, podijeliti, izbrisati i zamijeniti nizove koji sadrže nove redove u Pythonu

Poslovanje

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
  • 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.