Eftirfarandi lýsir virkni strengja sem innihalda nýlínur í Python.
- Búðu til streng sem inniheldur nýjar línur, prentúttak (skjár)
- nýlínustafur (annaðhvort eða bæði af CR og LF eftir kerfi)
\n
(LF),\r\n
(CR+LF) - þreföld tilvitnun
''
,"""
- Ef þú vilt draga inn
- nýlínustafur (annaðhvort eða bæði af CR og LF eftir kerfi)
- Settu saman lista yfir strengi með nýjum línum
- Skiptu streng í nýjar línur og listaðu:
splitlines()
- Fjarlægðu og skiptu um línustraumskóða
- Prentaðu úttak án þess að fylgja nýrri línu
Búðu til streng sem inniheldur nýjar línur, prentúttak
nýlínustafur (annaðhvort eða bæði af CR og LF eftir kerfi)\n(LF),\r\n(CR+LF)
Ef línustraumskóði er settur inn í streng mun það leiða til nýrrar línu.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Hægt er að nota línustraumskóða á eftirfarandi hátt. Sumir ritstjórar leyfa þér að velja línuskilakóða.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
þreföld tilvitnun'',"""
Ef þrefaldar gæsalappir eru notaðar til að umlykja strenginn, verður hann strengur eins og hann er, þar með talið nýlínur.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Ef þú vilt draga inn
Þrífaldar gæsalappir eru líka bil í streng, þannig að ef þú reynir að skrifa snyrtilega í kóða og inndrátt eins og sýnt er hér að neðan þá verða óþarfa bil sett inn.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Með því að nota skástrik til að hunsa nýjar línur í kóðanum og gera hann að framhaldslínu er hægt að skrifa það sem hér segir
Látið hverja línu fylgja með “ eða „“ og bætið við nýlínustaf ←n í lok setningar.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Hér er setningafræðin sú að röð strengjabókstafir eru samtengdir. Sjá eftirfarandi grein fyrir frekari upplýsingar.
Ef þú vilt bæta inndrætti í streng skaltu bara bæta bili við strenginn í hverri línu.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Þar að auki, þar sem hægt er að gera línuskil frjálslega innan sviga, er hægt að skrifa eftirfarandi með því að nota sviga í stað bakstrika.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Ef þú vilt bara samræma byrjun línu, bættu bara skástrik við fyrstu línuna af þreföldum gæsalöppum.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Settu saman lista yfir strengi með nýjum línum
Strengjaaðferðina join() er hægt að nota til að sameina lista yfir strengi í einn streng.
Þegar join() er kallað úr nýlínustaf er hver strengsþáttur tengdur við nýlínu.
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'
Eins og í dæminu hér að ofan er hægt að nota innbyggðu fallið repr() til að athuga strengi sem innihalda nýlínukóða eins og þeir eru.
Skiptu streng í nýjar línur og listaðu:splitlines()
Strengjaaðferðina splitlines() er hægt að nota til að skipta streng í lista yfir nýjar línur.
splitlines() mun skipta einhverjum af eftirfarandi línuskilakóðum. Lóðréttir flipar og síðuskil eru einnig skipt.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Fjarlægðu og skiptu um línustraumskóða
Með því að sameina splitlines() og join() er hægt að fjarlægja (fjarlægja) nýlínukóða úr streng sem inniheldur nýjar línur eða skipta þeim út fyrir aðra strengi.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
Lotubreyting á línustraumskóðum er einnig möguleg. Jafnvel þó að línuskilakóðar séu blandaðir eða óþekktir, þá er hægt að skipta þeim með splitlines() og síðan tengja saman þeim línuskilakóða sem óskað er eftir.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Eins og nefnt er hér að ofan mun splitlines() skipta hvorum nýlínukóðanum sem er, svo það er engin þörf á að hafa sérstakar áhyggjur af nýlínukóðum þegar um er að ræða aðferðina sem sameinar splitlines() og join().
Ef nýlínukóðinn er skýr er einnig hægt að skipta honum út fyrir replace() aðferðina, sem kemur í stað strengsins.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Athugaðu samt að það virkar ekki ef það inniheldur aðra línustraumskóða en búist var við.
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'
Það er hægt að skipta út mörgum nýlínukóðum með því að endurtaka replace(), en það virkar ekki ef röðin er röng vegna þess að „\r\n“ inniheldur „\n“. Aðferðin sem sameinar splitlines() og join() sem lýst er hér að ofan er öruggari vegna þess að það er engin þörf á að hafa áhyggjur af línustraumskóðum.
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
Notaðu rstrip() aðferðina til að fjarlægja línustraumskóða í lok setningar. rstrip() er aðferð til að fjarlægja hvíta bilstafi (þar á meðal línustrauma) hægra megin á streng.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Prentaðu úttak án þess að fylgja nýrri línu
Print() aðgerðin bætir sjálfgefið við nýrri línu á eftir. Þess vegna, ef print() er keyrt í röð, mun hver úttaksniðurstaða birtast á nýrri línu.
print('a')
print('b')
print('c')
# a
# b
# c
Þetta er vegna þess að sjálfgefið gildi rifrildarinnar end of print(), sem tilgreinir strenginn sem á að bæta við í lokin, er nýlínutáknið.
Ef þú vilt ekki nýja línu í lokin skaltu bara stilla rifrildisendinn á tóman streng og úttakið verður gefið út án nýrrar línu í lokin.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Endir rifrilda getur verið hvaða strengur sem er.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Hins vegar, ef þú vilt sameina strengi fyrir úttak, þá er auðveldara að sameina upprunalegu strengina en að tilgreina þá í end-argumenti print(). Sjá eftirfarandi grein.