Následující text popisuje práci s řetězci obsahujícími nové řádky v jazyce Python.
- Vytvoření řetězce obsahujícího nové řádky, tisk výstupu (zobrazení)
- znak nového řádku (v závislosti na systému buď CR, nebo LF).
\n
(LF),\r\n
(CR+LF) - trojitá citace
'''
,"""
- Pokud chcete odsadit
- znak nového řádku (v závislosti na systému buď CR, nebo LF).
- spojit seznam řetězců s novými řádky
- Rozdělení řetězce na nové řádky a seznam:
splitlines()
- Odstranění a nahrazení kódů řádkového posuvu
- Tisk výstupu bez koncového nového řádku
Vytvoření řetězce obsahujícího nové řádky, tisk výstupu
znak nového řádku (v závislosti na systému buď CR, nebo LF). \n(LF), \r\n(CR+LF)
Vložením kódu pro posuv řádku do řetězce vznikne nový řádek.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Kódy řádkového posuvu lze použít následujícími způsoby. Některé editory umožňují zvolit kód zalomení řádku.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
trojitá citace ''',"""
Pokud je řetězec uzavřen trojitými uvozovkami, bude to řetězec tak, jak je, včetně nových řádků.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Pokud chcete odsadit
Trojité uvozovky jsou také mezery v řetězci, takže pokud se snažíte psát úhledně v kódu a odsazovat, jak je uvedeno níže, budou vloženy zbytečné mezery.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Pomocí zpětného lomítka, které ignoruje nové řádky v kódu a dělá z něj pokračovací řádek, jej lze zapsat takto
Každý řádek uzavřete znakem '' nebo „“ a na konec věty přidejte znak nového řádku ←n.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
Syntaxe je zde taková, že se po sobě jdoucí řetězcové literály spojují. Podrobnosti naleznete v následujícím článku.
- Související články:Spojování a spojování řetězců v jazyce Python (operátor +, join atd.)
Pokud chcete přidat odsazení do řetězce, stačí přidat mezeru do řetězce na každém řádku.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Vzhledem k tomu, že v závorkách lze navíc libovolně provádět zalomení řádků, lze následující text zapsat pomocí závorek namísto zpětných lomítek.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Pokud chcete pouze zarovnat začátek řádku, stačí přidat zpětné lomítko na první řádek trojitých uvozovek.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
spojit seznam řetězců s novými řádky
Metodu join() lze použít ke spojení seznamu řetězců do jednoho řetězce.
- Související články:Spojování a spojování řetězců v jazyce Python (operátor +, join atd.)
Při volání funkce join() ze znaku nového řádku se každý prvek řetězce spojí s novým řádkem.
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'
Stejně jako ve výše uvedeném příkladu lze vestavěnou funkci repr() použít ke kontrole řetězců, které obsahují kódy nových řádků tak, jak jsou.
Rozdělení řetězce na nové řádky a seznam: splitlines()
Metodu splitlines() lze použít k rozdělení řetězce na seznam nových řádků.
splitlines() rozdělí kterýkoli z následujících kódů zalomení řádku. Svislé tabulátory a stránkové zlomy jsou také rozděleny.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Odstranění a nahrazení kódů řádkového posuvu
Kombinací funkcí splitlines() a join() lze z řetězce obsahujícího nové řádky odstranit (odstranit) kódy nových řádků nebo je nahradit jinými řetězci.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
Dávková změna kódů řádkového posuvu je rovněž možná. I když jsou kódy zalomení řádků smíšené nebo neznámé, lze je rozdělit pomocí funkce splitlines() a poté spojit s požadovaným kódem zalomení řádků.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Jak bylo uvedeno výše, metoda splitlines() rozdělí jakýkoli kód nového řádku, takže v případě metody kombinující splitlines() a join() není třeba se kódem nového řádku nijak zvlášť zabývat.
Pokud je kód nového řádku jasný, lze jej také nahradit metodou replace(), která řetězec nahradí.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Všimněte si však, že nebude fungovat, pokud bude obsahovat jiné kódy řádkového posuvu, než se očekává.
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'
Je možné nahradit více kódů nového řádku opakováním replace(), ale nebude to fungovat, pokud je pořadí špatné, protože „\r\n“ obsahuje „\n“. Výše popsaná metoda kombinující splitlines() a join() je bezpečnější, protože není třeba se starat o kódy řádkového posuvu.
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
Metoda rstrip() slouží k odstranění kódů řádkového posuvu na konci věty. rstrip() je metoda pro odstranění bílých znaků (včetně řádkového posuvu) na pravém konci řetězce.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Tisk výstupu bez koncového nového řádku
Funkce print() ve výchozím nastavení přidává koncový nový řádek. Pokud je tedy funkce print() spuštěna postupně, každý výsledek výstupu se zobrazí na novém řádku.
print('a')
print('b')
print('c')
# a
# b
# c
Je to proto, že výchozí hodnotou argumentu end funkce print(), který určuje řetězec, který má být přidán na konec, je symbol nového řádku.
Pokud nechcete mít na konci nový řádek, stačí nastavit argument end na prázdný řetězec a výstup bude vypsán bez nového řádku na konci.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Argument end může být libovolný řetězec.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Pokud však chcete řetězce pro výstup spojit, je jednodušší spojit původní řetězce, než je zadávat do koncového argumentu funkce print(). Viz následující článek.
- Související články:Spojování a spojování řetězců v jazyce Python (operátor +, join atd.)