9.1 Deklaracje ciągów znaków
W Pythonie ciągi znaków to sekwencje znaków używane do przechowywania i reprezentowania informacji tekstowej. Ciągi znaków można tworzyć na kilka sposobów, co zapewnia elastyczność przy ich deklarowaniu i manipulowaniu (Zmieniać ciągów znaków nie można, jak już wiecie).
Główne sposoby deklarowania ciągów znaków
- Pojedyncze cudzysłowy:
string
= 'Cześć, przyjacielu!' - Podwójne cudzysłowy:
string
= "Cześć, przyjacielu!"
Oba sposoby są równoważne, wybór zależy od preferencji programisty i od tego, jakie cudzysłowy występują w samym ciągu znaków (żeby uniknąć ich escape'owania).
Ciągi wielowierszowe
Do deklarowania ciągów wielowierszowych używa się potrójnych cudzysłowów. Mogą to być potrójne pojedyncze (''')
lub potrójne podwójne cudzysłowy (""")
. Taki sposób jest wygodny dla tekstu zajmującego kilka wierszy:
multiline_string = """Pierwsza linia
druga linia
trzecia linia"""
Escape'owanie znaków
W Pythonie znaki w ciągach można escape'ować za pomocą odwrotnego ukośnika (\
). To pozwala wstawiać specjalne znaki, takie jak nowa linia (\n
), tabulacja (\t
), czy sam odwrotny ukośnik (\\
).
escaped_string = "On powiedział: \"Cześć, przyjacielu!\""
Bardziej szczegółowo omówimy escape'owanie na paru kolejnych wykładach.
Surowe ciągi znaków
Surowe ciągi (raw string)
— to ciągi, w których escape'owanie znaków jest wyłączone. Deklaruje się je z prefiksem r
:
raw_string = r"W tym ciągu znaków \n nie jest traktowany jako nowa linia."
Formatowanie ciągów znaków
Python oferuje kilka metod formatowania ciągów znaków. Najpotężniejszą z nich są f-strings
, dostępne od Pythona 3.6. Pozwalają one wstawiać wyrażenia Pythona bezpośrednio do ciągu:
name = "Świecie"
formatted_string = f"Cześć, {name}!"
Konkatenacja ciągów znaków
Ciągi znaków można tworzyć łącząc kilka ciągów, używając operatora «+»
lub metody join()
w bardziej złożonych przypadkach:
greeting = "Cześć, " + "przyjacielu!"
Niezmienność (immutability) ciągów znaków
Pamiętaj, że ciągi w Pythonie są niezmienne. To oznacza, że wszelkie operacje modyfikujące ciąg faktycznie tworzą nowy ciąg.
9.2 Zagnieżdżone cudzysłowy
W Pythonie, praca z ciągami zawierającymi zagnieżdżone cudzysłowy, wymaga szczególnej uwagi do detali składni, aby zapewnić poprawność kodu i unikać błędów składniowych.
Nie można tak po prostu napisać cudzysłowu wewnątrz tekstu, który jest obramowany cudzysłowami. Na przykład, piszesz kod:
escaped_string = "On powiedział: "Cześć, świecie!"… "
A oto co widzi Python:
escaped_string = "On powiedział: "Cześć, świecie!"… "
Szuka nie najbliższego cudzysłowu w ciągu, ale następnego. Dlatego, aby dodać cudzysłów wewnątrz tekstu, trzeba się trochę wysilić. Oto przegląd głównych technik i metod zarządzania zagnieżdżonymi cudzysłowami w ciągach Pythona:
Użycie różnych typów cudzysłowów
Python pozwala używać zarówno pojedynczych (')
, jak i podwójnych (")
cudzysłowów do definiowania ciągów. To daje możliwość zagnieżdżania jednego typu cudzysłowów wewnątrz drugiego:
quote = "He said, 'Hello, world!'"
# lub
quote = 'He said, "Hello, world!"'
Escape'owanie cudzysłowów
Gdy trzeba użyć tych samych cudzysłowów wewnątrz ciągu, można skorzystać z odwrotnego ukośnika (\)
do escape'owania cudzysłowów:
quote = "He said,\"Hello, world!\" "
Ciągi wielowierszowe
Do tworzenia ciągów wielowierszowych zawierających zagnieżdżone cudzysłowy, wygodnie jest używać potrójnych cudzysłowów (''' lub """)
:
multiline_quote = """To jest długi cytat, który zawiera różne typy cudzysłowów: "podwójne cudzysłowy" i 'pojedyncze cudzysłowy'. Jest rozłożony na wiele linii."""
GO TO FULL VERSION