Izpisovanje, združevanje, deljenje, brisanje in nadomeščanje nizov, ki vsebujejo nove vrstice, v programu Python

Posel

V nadaljevanju je opisano delovanje nizov, ki vsebujejo nove vrstice, v programu Python.

  • Ustvari niz, ki vsebuje nove vrstice, in izpiše izpis (prikaz)
    • znak nove vrstice (CR in LF ali oba, odvisno od sistema).\n(LF), \r\n(CR+LF)
    • trojni citat''',"""
    • Če želite narediti alinejo
  • združite seznam nizov z novimi vrsticami
  • Razdelite niz na nove vrstice in seznam:splitlines()
  • Odstranite in zamenjajte kode linijskega napajanja
  • Izpis izpisa brez zadnje nove vrstice

Ustvari niz, ki vsebuje nove vrstice, natisni izhod

znak nove vrstice (CR in LF ali oba, odvisno od sistema). \n(LF), \r\n(CR+LF)

Če v niz vstavite kodo podajanja vrstice, bo nastala nova vrstica.

s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3

s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3

Kode za podajanje vrstic se lahko uporabljajo na naslednje načine. Nekateri urejevalniki omogočajo izbiro kode za prelom vrstice.

Macを含むUnix系\n(LF)
Windows系\r\n(CR+LF)

trojni citat ''',"""

Če je niz zaprt s trojnimi narekovaji, bo to takšen niz, kot je, vključno z novimi vrsticami.

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

Če želite narediti alinejo

Trojni narekovaji so tudi presledki v nizu, zato bodo vstavljeni nepotrebni presledki, če skušate v kodi pisati urejeno in z alinejo, kot je prikazano spodaj.

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

Z uporabo povratne poševnice, ki ne upošteva novih vrstic v kodi in jo naredi za nadaljevalno vrstico, jo lahko zapišemo takole

Vsako vrstico ogradite z '' ali “” in na koncu stavka dodajte znak nove vrstice ←n.

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

Pri tem je sintaksa taka, da se zaporedni literali niza združijo. Za podrobnosti glejte naslednji članek.

Če želite v niz dodati alinejo, v vsako vrstico niza dodajte presledek.

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

Poleg tega lahko v oklepajih prosto prelamljamo vrstice, zato lahko naslednje besedilo zapišemo z oklepaji namesto s povratnimi šumniki.

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

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

Če želite le poravnati začetek vrstice, v prvo vrstico trojnih narekovajev dodajte povratno poševnico.

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

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

združite seznam nizov z novimi vrsticami

Z metodo join() lahko združite seznam nizov v en sam niz.

Ko se funkcija join() kliče z znakom nove vrstice, se vsak element niza poveže z novo vrstico.

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'

Kot v zgornjem primeru lahko vgrajeno funkcijo repr() uporabite za preverjanje nizov, ki vsebujejo kode novih vrstic, kot so.

Razdelite niz na nove vrstice in seznam: splitlines()

Z metodo splitlines() lahko razdelimo niz na seznam novih vrstic.

funkcija splitlines() razdeli katero koli od naslednjih kod za prekinitev vrstice. Razdeli tudi navpične zavihke in prelome strani.

  • \n
  • \r\n
  • \v
  • \f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']

Odstranite in zamenjajte kode linijskega napajanja

S kombinacijo funkcij splitlines() in join() lahko iz niza, ki vsebuje nove vrstice, odstranite kode novih vrstic ali jih nadomestite z drugimi nizi.

s = 'Line1\nLine2\r\nLine3'

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

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

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

Možno je tudi paketno spreminjanje kod vrstic. Tudi če so kode za prelom vrstic mešane ali neznane, jih je mogoče razdeliti z uporabo funkcije splitlines() in nato združiti z želeno kodo za prelom vrstic.

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

print(repr(s_n))
# 'Line1\nLine2\nLine3'

Kot je omenjeno zgoraj, bo funkcija splitlines() razdelila vsako kodo nove vrstice, zato pri metodi, ki združuje funkcije splitlines() in join(), ni treba posebej skrbeti za kode nove vrstice.

Če je koda nove vrstice jasna, jo lahko nadomestite tudi z metodo replace(), ki nadomesti niz.

s = 'Line1\nLine2\nLine3'

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

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

Vendar upoštevajte, da ne bo delovala, če bo vsebovala drugačne kode vrstic od pričakovanih.

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'

S ponavljanjem funkcije replace() je mogoče zamenjati več kod novih vrstic, vendar to ne bo delovalo, če je vrstni red napačen, saj “\r\n” vsebuje “\n”. Zgoraj opisana metoda, ki združuje splitlines() in join(), je varnejša, saj ni treba skrbeti za kode za podajanje vrstic.

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

Uporabite metodo rstrip(), da odstranite kode vrstic na koncu stavka. rstrip() je metoda za odstranjevanje belih znakov (vključno z vrsticami) na desnem koncu niza.

s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb

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

Izpis izpisa brez zadnje nove vrstice

Funkcija print() privzeto doda zadnjo novo vrstico. Če je funkcija print() izvedena zaporedoma, bo zato vsak izhodni rezultat prikazan v novi vrstici.

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

To je zato, ker je privzeta vrednost argumenta end funkcije print(), ki določa niz, ki se doda na koncu, simbol nove vrstice.

Če ne želite nove vrstice na koncu, nastavite argument end na prazen niz in izpis bo prikazan brez nove vrstice na koncu.

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

Argument end je lahko poljuben niz.

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

Če pa želite za izpis združiti nize, je lažje združiti izvirne nize, kot jih navesti v končnem argumentu funkcije print(). Oglejte si naslednji članek.