Seuraavassa kuvataan rivinvaihdon sisältävien merkkijonojen toimintaa Pythonissa.
- Luo merkkijono, joka sisältää rivinvaihdon, tulostaa tulosteen (display)
- rivinvaihtomerkki (jompikumpi tai molemmat CR ja LF järjestelmästä riippuen).
\n
(LF),\r\n
(CR+LF) - kolminkertainen lainaus
'''
,"""
- Jos haluat sisennystä
- rivinvaihtomerkki (jompikumpi tai molemmat CR ja LF järjestelmästä riippuen).
- Yhdistä merkkijonojen luettelo rivinvaihdon kanssa
- Jaa merkkijono rivinvaihtoon ja listaan:
splitlines()
- Poistetaan ja korvataan rivinsyöttökoodit
- Tulosta tuloste ilman perään tulevaa rivinvaihtoa
Luo merkkijono, joka sisältää rivinvaihdon, tulosta tuloste
rivinvaihtomerkki (jompikumpi tai molemmat CR ja LF järjestelmästä riippuen). \n(LF), \r\n(CR+LF)
Rivinvaihtokoodin lisääminen merkkijonon sisään johtaa uuteen riviin.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Rivinsyöttökoodeja voidaan käyttää seuraavilla tavoilla. Joissakin editoreissa voit valita rivinvaihtokoodin.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
kolminkertainen lainaus ''',"""
Jos merkkijono suljetaan kolmoislauseilla, se on merkkijono sellaisenaan, rivinvaihdot mukaan lukien.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Jos haluat sisennystä
Kolminkertaiset lainausmerkit ovat myös välilyöntejä merkkijonossa, joten jos yrität kirjoittaa koodin siististi ja sisennyksen alla esitetyllä tavalla, tarpeettomat välilyönnit lisätään.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Käyttämällä backslash-viivaa, jotta koodin rivinvaihdot jätetään huomiotta ja koodista tehdään jatkorivi, se voidaan kirjoittaa seuraavasti
Sulje jokainen rivi ''- tai ”” -merkillä ja lisää rivinvaihtomerkki ←n lauseen loppuun.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Tässä tapauksessa peräkkäiset merkkijonokirjaimet liitetään yhteen. Katso lisätietoja seuraavasta artikkelista.
- Aiheeseen liittyvät artikkelit:Merkkijonojen ketjuttaminen ja yhdistäminen Pythonissa (+-operaattori, join jne.)
Jos haluat lisätä merkkijonoon sisennyksen, lisää merkkijonoon välilyönti jokaisella rivillä.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Koska rivinvaihdot voidaan lisäksi tehdä vapaasti sulkeissa, seuraava voidaan kirjoittaa käyttämällä sulkeita vinoviivojen sijasta.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Jos haluat vain tasata rivin alun, lisää backslash-merkki kolmoislauseiden ensimmäiselle riville.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Yhdistä merkkijonojen luettelo rivinvaihdon kanssa
Merkkijonometodilla join() voidaan ketjuttaa merkkijonojen luettelo yhdeksi merkkijonoksi.
- Aiheeseen liittyvät artikkelit:Merkkijonojen ketjuttaminen ja yhdistäminen Pythonissa (+-operaattori, join jne.)
Kun join()-toimintoa kutsutaan rivinvaihtomerkin jälkeen, jokainen merkkijonoelementti liitetään rivinvaihtomerkin kanssa yhteen.
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'
Kuten yllä olevassa esimerkissä, sisäänrakennettua funktiota repr() voidaan käyttää tarkistamaan merkkijonot, jotka sisältävät rivinvaihtokoodeja, sellaisina kuin ne ovat.
Jaa merkkijono rivinvaihtoon ja listaan: splitlines()
Merkkijonomenetelmää splitlines() voidaan käyttää merkkijonon jakamiseen rivinvaihtolistaksi.
splitlines() jakaa minkä tahansa seuraavista rivinvaihtokoodeista. Myös pystysuorat välilehdet ja sivunvaihdot jaetaan.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Poistetaan ja korvataan rivinsyöttökoodit
Yhdistämällä splitlines() ja join() on mahdollista poistaa (poistaa) rivinvaihtokoodit rivinvaihtoja sisältävästä merkkijonosta tai korvata ne muilla merkkijonoilla.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
Myös rivinsyöttökoodien muuttaminen eräajona on mahdollista. Vaikka rivinvaihtokoodit olisivat sekalaisia tai tuntemattomia, ne voidaan jakaa splitlines()-ohjelmalla ja yhdistää sitten halutun rivinvaihtokoodin kanssa.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Kuten edellä mainittiin, splitlines() jakaa minkä tahansa rivinvaihtokoodin, joten rivinvaihtokoodeista ei tarvitse olla erityisen huolissaan, kun kyseessä on menetelmä, jossa yhdistetään splitlines() ja join().
Jos rivinvaihtokoodi on selkeä, se voidaan korvata myös replace()-metodilla, joka korvaa merkkijonon.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Huomaa kuitenkin, että se ei toimi, jos se sisältää odotetusta poikkeavia rivinvaihtokoodeja.
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'
On mahdollista korvata useita rivinvaihtokoodeja toistamalla replace(), mutta se ei toimi, jos järjestys on väärä, koska ”\r\n” sisältää ”\n”. Edellä kuvattu menetelmä, jossa yhdistetään splitlines() ja join(), on turvallisempi, koska rivinvaihtokoodeista ei tarvitse huolehtia.
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
Metodilla rstrip() voit poistaa rivinvaihtokoodit lauseen lopusta. rstrip() on metodi, jolla voit poistaa valkoiset välilyöntimerkit (myös rivinvaihdot) merkkijonon oikeasta päästä.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Tulosta tuloste ilman perään tulevaa rivinvaihtoa
Print()-funktio lisää oletusarvoisesti rivinvaihdon perään. Jos siis print()-funktio suoritetaan peräkkäin, jokainen tulostustulos näytetään uudella rivillä.
print('a')
print('b')
print('c')
# a
# b
# c
Tämä johtuu siitä, että print():n argumentin end, joka määrittää loppuun lisättävän merkkijonon, oletusarvo on rivinvaihtosymboli.
Jos et halua rivinvaihtoa loppuun, aseta argumentin end arvoksi tyhjä merkkijono, jolloin tuloste tulostuu ilman rivinvaihtoa lopussa.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Argumentti end voi olla mikä tahansa merkkijono.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Jos kuitenkin haluat ketjuttaa merkkijonoja tulostusta varten, on helpompaa ketjuttaa alkuperäiset merkkijonot kuin määrittää ne print()-olion loppuargumentissa. Katso seuraava artikkeli.
- Aiheeseen liittyvät artikkelit:Merkkijonojen ketjuttaminen ja yhdistäminen Pythonissa (+-operaattori, join jne.)