Väljastada, liita, jagada, kustutada ja asendada Pythonis newlines’i sisaldavaid stringid

Äri

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

Copied title and URL