Järgnevalt kirjeldatakse newlines'i sisaldavate stringide toimimist Pythonis.
- Luua string, mis sisaldab newlines, printida väljund (display)
- uusriba märk (olenevalt süsteemist kas CR või LF või mõlemad)
\n
(LF),\r\n
(CR+LF) - kolmekordne tsitaat
'''
,"""
- Kui soovite taandada
- uusriba märk (olenevalt süsteemist kas CR või LF või mõlemad)
- Siduda stringide nimekiri koos newline'idega
- Jagab stringi newline'ideks ja loeteluks:
splitlines()
- Eemaldage ja asendage ridade sisestamise koodid
- Väljundi printimine ilma tagantjärgneva uustuletusjooneta
Luua string, mis sisaldab newlines, printida väljund
uusriba märk (olenevalt süsteemist kas CR või LF või mõlemad) \n(LF), \r\n(CR+LF)
Ridade sisestamise kood stringi sees annab tulemuseks uue rea.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Ridaülekandekoode saab kasutada järgmiselt. Mõned redaktorid võimaldavad valida reavahetuskoodi.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
kolmekordne tsitaat ''',"""
Kui stringi ümbritsemiseks kasutatakse kolmekordseid jutumärke, siis on see string sellisena nagu ta on, kaasa arvatud read.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Kui soovite taandada
Kolmekordsed jutumärgid on samuti tühikud stringis, nii et kui püüate koodis kenasti kirjutada ja alltoodud viisil sisse tõmmata, siis lisatakse ebavajalikud tühikud.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Kasutades tagurpidi kaldkriipsu, et ignoreerida read koodis ja muuta see jätkuriviks, saab seda kirjutada järgnevalt
Sisestage iga rida '' või “” ja lisage lause lõppu uusjoon ←n.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Siin on süntaks selline, et järjestikused stringiliteraalid on liidetud. Vt üksikasju järgmises artiklis.
Kui soovite sisestada stringi sisse mõttekohti, lisage stringile lihtsalt igas reas tühik.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Lisaks, kuna sulgudes võib vabalt teha reavahetusi, võib järgnevat kirjutada, kasutades kaldkriipsude asemel sulgusid.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Kui soovite lihtsalt joondada rea algust, lisage lihtsalt tagurpidi kaldkriips esimesele reale kolmekordsete jutumärkide järele.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Siduda stringide nimekiri koos newline'idega
Stringimeetodit join() saab kasutada stringide loendi ühendamiseks üheks stringiks.
Kui join() kutsutakse newline-märgist, ühendatakse iga stringi element newline'iga.
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'
Nagu ülaltoodud näites, saab sisseehitatud funktsiooni repr() kasutada stringide kontrollimiseks, mis sisaldavad newline-koode, nagu need on.
Jagab stringi newline'ideks ja loeteluks: splitlines()
Stringimeetodit splitlines() saab kasutada stringi jagamiseks uusridade loendiks.
splitlines() jagab mis tahes järgmistest reavahetuskoodidest. Samuti jagatakse vertikaalsed tabulaatorid ja leheküljevahetused.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Eemaldage ja asendage ridade sisestamise koodid
Kombineerides splitlines() ja join(), on võimalik eemaldada (eemaldada) newline koodid newline'i sisaldavast stringist või asendada need teiste stringidega.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
Võimalik on ka reavõttesöötme koodide muutmine partii korras. Isegi kui reavahetuskoodid on segatud või tundmatud, saab neid splitlines() abil jagada ja seejärel liita soovitud reavahetuskoodiga.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Nagu eespool mainitud, jagab splitlines() kas newline-koodi, nii et meetodi splitlines() ja join() kombineerimisel ei ole vaja eriti muretseda newline-koodide pärast.
Kui newline-kood on selge, saab selle asendada ka meetodiga replace(), mis asendab stringi.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Pange aga tähele, et see ei tööta, kui see sisaldab oodatust erinevaid reasöötmiskoode.
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 võimalik asendada mitu newline-koodi, kordades replace(), kuid see ei tööta, kui järjekord on vale, sest “\r\n” sisaldab “\n”. Eespool kirjeldatud meetod, mis kombineerib splitlines() ja join(), on turvalisem, sest ei pea muretsema reavahetuskoodide pärast.
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
Kasutage meetodit rstrip(), et eemaldada read feed koodid lause lõpus. rstrip() on meetod valge tühiku märkide (sh read feed) eemaldamiseks stringi paremas otsas.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Väljundi printimine ilma tagantjärgneva uustuletusjooneta
Funktsioon print() lisab vaikimisi tagumise uue rea. Seega, kui print() käivitatakse järjest, kuvatakse iga väljundi tulemus uuel real.
print('a')
print('b')
print('c')
# a
# b
# c
Selle põhjuseks on see, et print() argumendi end vaikeväärtus, mis määrab lõppu lisatava stringi, on newline'i sümbol.
Kui te ei soovi, et lõpus oleks uus rida, siis seadke argumendiks lihtsalt tühi string ja väljund väljastatakse ilma uue jooneta lõpus.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Argument end võib olla mis tahes string.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Kui aga soovite väljundi jaoks stringid kokku liita, on lihtsam algseid stringisid kokku liita, kui neid print() lõppargumendiks määrata. Vt järgmist artiklit.