I det følgende beskrives, hvordan strenge, der indeholder newlines, skal behandles i Python.
- Opret en streng, der indeholder nye linjer, udskriv output (display)
- newline-tegn (enten CR eller LF eller begge, afhængigt af systemet)
\n
(LF),\r\n
(CR+LF) - tredobbelt citat
'''
,"""
- Hvis du ønsker at indrykke
- newline-tegn (enten CR eller LF eller begge, afhængigt af systemet)
- Sammenkædning af en liste af strenge med nye linjer
- Opdele streng i newlines og liste:
splitlines()
- Fjern og udskift koder for linjeføring
- Udskriv output uden afsluttende newline
Opret en streng, der indeholder nye linjer, udskriv output
newline-tegn (enten CR eller LF eller begge, afhængigt af systemet) \n(LF), \r\n(CR+LF)
Indsættelse af en linjefodskode i en streng resulterer i en ny linje.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Linjeføringskoder kan bruges på følgende måder. Nogle editorer giver dig mulighed for at vælge en linjeskiftskode.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
tredobbelt citat ''',"""
Hvis der anvendes tredobbelte anførselstegn til at omslutte strengen, vil den være en string som den er, inklusive newlines.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Hvis du ønsker at indrykke
Tredobbelte anførselstegn er også mellemrum i en streng, så hvis du forsøger at skrive pænt i kode og indrykke som vist nedenfor, vil der blive indsat unødvendige mellemrum.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Ved at bruge en backslash til at ignorere newlines i koden og gøre den til en fortsættelseslinje kan den skrives som følger
Hver linje omsluttes med '' eller “”, og der tilføjes et newline-tegn ←n i slutningen af sætningen.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Her er syntaksen, at på hinanden følgende strengliteraler sammenkædes. Se følgende artikel for nærmere oplysninger.
- Relaterede artikler:Sammenkædning og sammenføjning af strenge i Python (+ operatoren, sammenføjning, osv.)
Hvis du ønsker at tilføje indrykning i en streng, skal du blot tilføje et mellemrum til strengen i hver linje.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Da linjeskift frit kan foretages i parenteser, kan følgende desuden skrives med parenteser i stedet for skråstreger.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Hvis du blot vil tilpasse begyndelsen af en linje, skal du blot tilføje en skråstreg i den første linje med tredobbelte anførselstegn.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Sammenkædning af en liste af strenge med nye linjer
Strengmetoden join() kan bruges til at sammenkæde en liste af strenge til en enkelt streng.
- Relaterede artikler:Sammenkædning og sammenføjning af strenge i Python (+ operatoren, sammenføjning, osv.)
Når join() kaldes fra et newline-tegn, sammenkædes hvert strengelement med en newline.
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'
Som i eksemplet ovenfor kan den indbyggede funktion repr() bruges til at kontrollere strenge, der indeholder newline-koder, som de er.
Opdele streng i newlines og liste: splitlines()
Strengmetoden splitlines() kan bruges til at opdele en streng i en liste af newlines.
splitlines() opdeler enhver af følgende linjeskiftskoder. Lodrette tabulatorer og sideskift deles også op.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Fjern og udskift koder for linjeføring
Ved at kombinere splitlines() og join() er det muligt at fjerne (fjerne) newline-koder fra en streng, der indeholder newlines, eller erstatte dem med andre strenge.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
Det er også muligt at ændre linjefodskoder i batch. Selv hvis linjeskiftskoderne er blandede eller ukendte, kan de opdeles ved hjælp af splitlines() og derefter sammenkædes med den ønskede linjeskiftskode.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Som nævnt ovenfor vil splitlines() opdele enhver newline-kode, så der er ingen grund til at være særligt bekymret for newline-koder i tilfælde af metoden, der kombinerer splitlines() og join().
Hvis newline-koden er tydelig, kan den også erstattes af metoden replace(), som erstatter strengen.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Bemærk dog, at det ikke vil fungere, hvis det indeholder andre linjefodskoder end forventet.
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'
Det er muligt at erstatte flere newline-koder ved at gentage replace(), men det vil ikke fungere, hvis rækkefølgen er forkert, fordi “\r\n” indeholder “\n”. Metoden, der kombinerer splitlines() og join() som beskrevet ovenfor, er mere sikker, fordi der ikke er behov for at bekymre sig om linjefodskoder.
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
Brug metoden rstrip() til at fjerne linjeskiftkoder i slutningen af en sætning. rstrip() er en metode til at fjerne hvide mellemrums tegn (herunder linjeskift) i højre ende af en streng.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Udskriv output uden afsluttende newline
Funktionen print() tilføjer som standard en afsluttende newline. Hvis print() udføres efter hinanden, vil hvert outputresultat derfor blive vist på en ny linje.
print('a')
print('b')
print('c')
# a
# b
# c
Det skyldes, at standardværdien af argumentet end i print(), som angiver den streng, der skal tilføjes i slutningen, er newline-symbolet.
Hvis du ikke ønsker en newline i slutningen, skal du blot indstille argumentet end til en tom streng, og output vil blive outputet uden en newline i slutningen.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Argumentet end kan være en vilkårlig streng.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Hvis du imidlertid ønsker at sammenkæde strenge til output, er det lettere at sammenkæde de originale strenge end at angive dem i slutargumentet for print(). Se følgende artikel.