Łańcuchy w Pythonie
Wpisywanie odpowiedzi
Korzystasz z platformy z limitem dziennym na liczbę odpowiedzi. Aby zwiększyć limit lub uzyskać dostęp do konta z licencją, zaloguj się.
Zaloguj sięZapis łańcuchów znaków
Łańcuchy znaków zapisujemy w cudzysłowach lub apostrofach. W Pythonie 3 łańcuchy mogą zawierać również znaki diakrytyczne.
a = "To jest łańcuch znaków"
b = 'To też jest łańcuch znaków'
print(a, b)Indeksowanie
Do poszczególnych znaków łańcucha odwołujemy się za pomocą indeksowania w nawiasach kwadratowych. Uwaga: indeksowanie zaczyna się od zera. Python (w przeciwieństwie do większości innych języków programowania) pozwala także na indeksowanie od końca za pomocą liczb ujemnych.
text = "krowa"
text[0] # pierwsza litera => 'k'
text[1] # druga litera => 'r'
text[4] # piąta, ostatnia litera => 'a'
text[-1] # ostatnia litera => 'a'
text[-2] # przedostatnia litera => 'w'Za pomocą dwukropka możemy wycinać podłańcuch.
text = "informatyk"
print(text[2:6]) # od pozycji 2 do 5 => form
print(text[:3]) # pierwsze 3 znaki => inf
print(text[-4:]) # ostatnie 4 znaki => atykBardziej zaawansowanym elementem jest użycie dwóch dwukropków, gdzie trzecia wartość oznacza krok:
text = "Mamy-kotka-i-pieska"
print(text[5:15:2]) # od pozycji 5 do 14, co 2 => ktaip
print(text[::3]) # od początku do końca, co 3 => Myoa-ea
print(text[::-1]) # odwrócony tekst => akseip-i-aktok-ymaMIteracja po łańcuchu znaków
Poszczególne znaki łańcucha możemy łatwo przeglądać za pomocą pętli for.
text = "kotwica"
for letter in text:
print("litera:", letter)Niezmienność łańcuchów znaków
Łańcuchy znaków w Pythonie są niemutowalnym (immutable) typem danych. Jest to jedna z cech, która odróżnia je od list. Oznacza to, że nie możemy zmienić pojedynczego znaku w istniejącym łańcuchu. Musimy utworzyć nowy łańcuch, w którym dana litera zostanie zmieniona.
text = "korek"
text[2] = "t" # TypeError - łańcuch znaków nie pozwala na zmianę pojedynczego znaku
text = text[:2]+"n"+text[3:] # tworzymy nowy łańcuch
print(text)Operacje na łańcuchach znaków
Łańcuchy znaków można dodawać (łączyć). Możemy je także mnożyć przez liczbę całkowitą (powielać). Do innych przydatnych operacji należy sprawdzanie długości (‘len’) oraz testowanie obecności podłańcucha (‘in’).
text = "Biały"
text + "stok" # => Białystok
3*text # => BiałyBiałyBiały
len(text) # => 5
"a" in text # => TrueŁańcuchy znaków są obiektami i mają wiele przydatnych metod wywoływanych w notacji kropkowej. Np. zamiana na wielkie lub małe litery (upper, lower), dzielenie łańcucha według podanego znaku (split) oraz zastępowanie podłańcucha (replace):
text = "Lublin"
text.upper() # => LUBLIN
text.lower() # => lublin
text.split("l") # => ['Lub', 'in']
text.replace("Lu", "Du") # => DublinZauważ, że używamy notacji kropkowej text.upper(), a nie funkcji upper(text), ponieważ łańcuchy znaków są obiektami.
Operacje na znakach
Podczas pracy z łańcuchami znaków czasami przydają się również operacje na pojedynczych znakach, a w szczególności funkcje ord i chr, które zamieniają znaki na liczby całkowite i odwrotnie:
ord(c)zwraca kod znakuc,chr(i)zwraca znak kodziei.
Pod pojęciem „kod” rozumie się numer w kodowaniu Unicode. W podstawowych zastosowaniach litery w tym kodowaniu są ułożone alfabetycznie jedna po drugiej (dotyczy to głównie alfabetu angielskiego). W ten sposób możemy wypisać litery alfabetu angielskiego:python start = ord('A') for i in range(26): print(chr(start + i))
Łańcuchy w Pythonie (łatwe)