Tulosta, yhdistä, jaa, poista ja korvaa rivinvaihtoja sisältäviä merkkijonoja Pythonissa.

liiketoiminta

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

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.

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.

Copied title and URL