Poniżej opisano działanie łańcuchów zawierających nowe linie w języku Python.
- Utwórz łańcuch zawierający znaki nowej linii, wydrukuj dane wyjściowe (wyświetl)
- znak nowej linii (albo CR albo LF, zależnie od systemu)
\n
(LF),\r\n
(CR+LF) - potrójny cytat
'''
,"""
- Jeśli chcesz zastosować wcięcie
- znak nowej linii (albo CR albo LF, zależnie od systemu)
- Złącz listę ciągów znaków z liniami nowej kolejności
- Podziel łańcuch na nowe linie i listę:
splitlines()
- Usuń i wymień kody zasilania linii
- Drukuj dane wyjściowe bez końcowego znaku nowej linii
Utwórz łańcuch zawierający znaki nowej linii, wydrukuj dane wyjściowe
znak nowej linii (albo CR albo LF, zależnie od systemu) \n(LF), \r\n(CR+LF)
Wstawienie kodu podawania wiersza wewnątrz łańcucha spowoduje utworzenie nowego wiersza.
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
Kody łamania linii mogą być używane w następujący sposób. Niektóre edytory umożliwiają wybranie kodu podziału wiersza.
Macを含むUnix系 | \n (LF) |
Windows系 | \r\n (CR+LF) |
potrójny cytat ''',"""
Jeśli do zamknięcia łańcucha użyto potrójnych cudzysłowów, będzie to łańcuch w takiej postaci, w jakiej występuje, łącznie z liniami nowej linii.
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Jeśli chcesz zastosować wcięcie
Potrójne cudzysłowy są jednocześnie spacjami w łańcuchu, więc jeśli spróbujesz pisać starannie w kodzie i używać wcięć, jak pokazano poniżej, zostaną wstawione niepotrzebne spacje.
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
Używając odwrotnego ukośnika, aby zignorować nowe linie w kodzie i uczynić go linią kontynuacji, można go zapisać w następujący sposób
Otocz każdy wiersz znakiem '' lub „” i dodaj znak nowej linii ←n na końcu zdania.
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
W tym przypadku składnia jest taka, że kolejne literały łańcuchowe są konkatenowane. Szczegółowe informacje na ten temat można znaleźć w poniższym artykule.
- Powiązane artykuły:Łączenie i konkatenacja łańcuchów w Pythonie (operator +, join itp.)
Aby dodać wcięcie w łańcuchu, wystarczy dodać spację do łańcucha w każdym wierszu.
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
Ponadto, ponieważ w nawiasach można dowolnie tworzyć przerwy między wierszami, poniższy tekst można zapisać, używając nawiasów zamiast odwrotnych ukośników.
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
Jeśli chcesz tylko wyrównać początek wiersza, dodaj odwrotny ukośnik do pierwszego wiersza cudzysłowów potrójnych.
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
Złącz listę ciągów znaków z liniami nowej kolejności
Metoda join() może służyć do łączenia listy ciągów w jeden ciąg.
- Powiązane artykuły:Łączenie i konkatenacja łańcuchów w Pythonie (operator +, join itp.)
Gdy funkcja join() jest wywoływana ze znaku nowej linii, każdy element łańcucha jest konkatenowany z nową linią.
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'
Podobnie jak w powyższym przykładzie, wbudowana funkcja repr() może być użyta do sprawdzania łańcuchów zawierających kody nowej linii.
Podziel łańcuch na nowe linie i listę: splitlines()
Metoda łańcuchowa splitlines() może być użyta do podzielenia łańcucha na listę nowych linii.
splitlines() podzieli dowolny z poniższych kodów podziału wiersza. Pionowe tabulatory i podziały stron są również dzielone.
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
Usuń i wymień kody zasilania linii
Przez połączenie funkcji splitlines() i join() można usunąć (usunąć) kody nowych linii z łańcucha zawierającego nowe linie lub zastąpić je innymi łańcuchami.
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
Możliwa jest również wsadowa zmiana kodów linijek. Nawet jeśli kody podziału wiersza są mieszane lub nieznane, można je podzielić za pomocą funkcji splitlines(), a następnie połączyć z żądanym kodem podziału wiersza.
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
Jak wspomniano powyżej, funkcja splitlines() podzieli każdy kod nowej linii, więc nie ma potrzeby szczególnie przejmować się kodami nowej linii w przypadku metody łączącej splitlines() i join().
Jeśli kod nowej linii jest wyraźny, można go również zastąpić metodą replace(), która zastępuje łańcuch.
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
Należy jednak pamiętać, że nie będzie on działał, jeśli będzie zawierał inne niż oczekiwane kody podawania wierszy.
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'
Możliwe jest zastąpienie wielu kodów nowej linii przez powtórzenie replace(), ale nie zadziała to, jeśli kolejność jest niepoprawna, ponieważ „\” zawiera „\”. Opisana powyżej metoda łącząca splitlines() i join() jest bezpieczniejsza, ponieważ nie trzeba się martwić o kody podawania linii.
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
Użyj metody rstrip(), aby usunąć kody pasków wiersza na końcu zdania. rstrip() jest metodą służącą do usuwania białych znaków spacji (w tym pasków wiersza) na prawym końcu łańcucha.
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
Drukuj dane wyjściowe bez końcowego znaku nowej linii
Funkcja print() domyślnie dodaje końcowy znak nowej linii. Dlatego jeśli funkcja print() zostanie wykonana po kolei, każdy wynik zostanie wyświetlony w nowej linii.
print('a')
print('b')
print('c')
# a
# b
# c
Dzieje się tak, ponieważ domyślną wartością argumentu end funkcji print(), określającego łańcuch, który ma zostać dodany na końcu, jest symbol nowej linii.
Jeśli nie chcesz wstawiać nowej linii na końcu, wystarczy, że ustawisz argument end na pusty łańcuch, a dane wyjściowe zostaną wysłane bez nowej linii na końcu.
print('a', end='')
print('b', end='')
print('c', end='')
# abc
Argument end może być dowolnym ciągiem znaków.
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
Jeśli jednak chcesz konkatenować ciągi znaków na wyjściu, łatwiej jest konkatenować oryginalne ciągi znaków, niż podawać je w argumencie końcowym funkcji print(). Zobacz następujący artykuł.
- Powiązane artykuły:Łączenie i konkatenacja łańcuchów w Pythonie (operator +, join itp.)