Följande beskriver hur strängar som innehåller nya rader fungerar i Python.
- Skapa en sträng som innehåller nya rader, skriv ut utdata (display)
- Nyradstecken (antingen CR eller LF eller båda, beroende på system).
\n
(LF),\r\n
(CR+LF) - tredubbelt citat
'''
,"""
- Om du vill dra in
- Nyradstecken (antingen CR eller LF eller båda, beroende på system).
- Sammanfoga en lista med strängar med nya rader
- Dela strängen i nya rader och en lista:
splitlines()
- Ta bort och byt ut koder för linjetillförsel.
- Skriv ut utdata utan avslutande nyrad
Skapa en sträng som innehåller nya rader, skriv ut utdata
Nyradstecken (antingen CR eller LF eller båda, beroende på system). \n(LF), \r\n(CR+LF)
Om du infogar en radmatningskod i en sträng kommer en ny rad att skapas.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Koder för radmatning kan användas på följande sätt. I vissa redigerare kan du välja en radbrytningskod.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
tredubbelt citat ''',"""
Om tredubbla citationstecken används för att innesluta strängen kommer den att vara en sträng som den är, inklusive nya rader.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Om du vill dra in
Tredubbla citationstecken är också mellanslag i en sträng, så om du försöker skriva snyggt i koden och drar in som nedan, kommer onödiga mellanslag att infogas.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Genom att använda ett backslash för att ignorera nya rader i koden och göra den till en fortsättningsrad kan den skrivas på följande sätt
Inkludera varje rad med '' eller ”” och lägg till en ny rad ←n i slutet av meningen.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Här är syntaxen att på varandra följande stränglitteraler sammanlänkas. Se följande artikel för mer information.
- Relaterade artiklar:Sammanfoga och sammanfoga strängar i Python (+operatorn, sammanfoga osv.)
Om du vill lägga till indrag i en sträng lägger du bara till ett mellanslag i strängen på varje rad.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Eftersom radbrytningar kan göras fritt i parenteser kan följande skrivas med hjälp av parenteser istället för backslashes.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Om du bara vill justera början av en rad lägger du bara till ett backslash på den första raden av trippelcitat.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Sammanfoga en lista med strängar med nya rader
Strängmetoden join() kan användas för att sammanfoga en lista med strängar till en enda sträng.
- Relaterade artiklar:Sammanfoga och sammanfoga strängar i Python (+operatorn, sammanfoga osv.)
När join() anropas från ett nyradstecken, sammanfogas varje strängelement med ett nyradstecken.
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 exemplet ovan kan den inbyggda funktionen repr() användas för att kontrollera strängar som innehåller newline-koder som de är.
Dela strängen i nya rader och en lista: splitlines()
Strängmetoden splitlines() kan användas för att dela upp en sträng i en lista med nya rader.
splitlines() delar upp någon av följande radbrytningskoder. Vertikala flikar och sidbrytningar delas också.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Ta bort och byt ut koder för linjetillförsel.
Genom att kombinera splitlines() och join() är det möjligt att ta bort (ta bort) newline-koder från en sträng som innehåller newlines eller ersätta dem med andra strängar.
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 är också möjligt att ändra radmatningskoder i batch. Även om radbrytningskoderna är blandade eller okända kan de delas med hjälp av splitlines() och sedan sammanfogas med den önskade radbrytningskoden.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Som nämnts ovan kommer splitlines() att dela upp alla nyradskoder, så det finns ingen anledning att vara särskilt orolig för nyradskoder när metoden kombinerar splitlines() och join().
Om koden för nya rader är tydlig kan den också ersättas med metoden replace(), som ersätter strängen.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Observera dock att det inte kommer att fungera om det innehåller andra ramavtalsbeteckningar än de förväntade.
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 är möjligt att ersätta flera nyradskoder genom att upprepa replace(), men det fungerar inte om ordningen är felaktig eftersom ”\r\n” innehåller ”\n”. Metoden som kombinerar splitlines() och join() som beskrivs ovan är säkrare eftersom man inte behöver oroa sig för radmatningskoder.
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
Använd metoden rstrip() för att ta bort radmatningskoder i slutet av en mening. rstrip() är en metod för att ta bort vitrymdstecken (inklusive radmatningskoder) i slutet av en sträng.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Skriv ut utdata utan avslutande nyrad
Funktionen print() lägger som standard till en avslutande nyrad. Om print() körs i följd kommer därför varje utdataresultat att visas på en ny rad.
print('a')
print('b')
print('c')
# a
# b
# c
Detta beror på att standardvärdet för argumentet end i print(), som anger den sträng som ska läggas till i slutet, är symbolen newline.
Om du inte vill ha en ny rad i slutet, sätt bara argumentet end till en tom sträng, så kommer utmatningen att ske utan en ny rad i slutet.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Argumentet end kan vara vilken sträng som helst.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Om du vill sammanfoga strängar för utskrift är det dock lättare att sammanfoga de ursprungliga strängarna än att ange dem i slutargumentet för print(). Se följande artikel.
- Relaterade artiklar:Sammanfoga och sammanfoga strängar i Python (+operatorn, sammanfoga osv.)