Podstawowe operacje na napisach


Napisy są fragmentami tekstu. W sumie jest nim każdy ciąg znaków, który ujęliśmy w cudzysłów lub apostrofy:

napis = "Witaj swiecie!"
napis_2 = 'Witaj swiecie!'
print napis   # Witaj swiecie!
print napis_2 # Witaj swiecie!

Te dwa różne sposoby zapisu dają taki sam efekt końcowy. Jedyna różnica polega na tym, że przy użyciu "" możemy wygodnie umieścić w tekście znak apostrofu '. W przeciwnym razie musisz użyć znaku \ przed apostrofem, który ma zostać wyświetlony.

print "Nigdy nie czytalem 'Potopu'."   # Nigdy nie czytalem 'Potopu'.
print 'Nigdy nie czytalem \'Potopu\'.' # Nigdy nie czytalem 'Potopu'.
# Ponizej jak umiescic " w tekscie
print "Nigdy nie czytalem \"Potopu\"." # Nigdy nie czytalem "Potopu".

Dobrze, zdecydować się na jeden rodzaj zapisu. Wiele osób preferuje "", bo takie samo oznaczenie występuje w innych językach.

Poniżej zaprezentowano kilka przydatnych operacji na napisach.

napis = "AAA BBB ..."
print len(napis) # 11

Funkcja len() informuje nas z jak wielu znaków składa się napis. Zliczane są również spacje i znaki przestankowe.

napis = "abcdeabcde"
print napis.index("a") # 0
print napis.index("d") # 3

Metoda index zwraca numer pierwszego znaku identycznego z tym podanym w nawiasie. Znaki numerowane są od lewej i od zera, tak samo jak tablicach.

napis = "abrakadabra"
print napis.count("a")  # 5
print napis.count("ab") # 2

Ta metoda sprawdza ile razy w napisie pojawia się znak lub ciąg ujęty w cudzysłów.

napis = "abcdefghijk"
print napis[2] # c

Za pomocą nawiasów kwadratowych możemy uzyskać dostęp do pojedynczego znaku, jeśli znamy jego indeks.

napis = "abcdefghijklmnop"
print napis[3:7] # defg

W ten sposób możemy wypisać interesujący nas fragment napisu, zaczynając od trzeciego indeksu i kończąc na szóstym. Ale dlaczego 6 a nie 7? Wynika to znowu z niepisanej zasady wśród twórców języków. Takie indeksowanie znacznie ułatwia obliczenia.

napis = "abcdefg"

print napis[0:4] # abcd
print napis[:4]  # abcd

print napis[::] # Wypisze caly napis

# zamiast liczby mozemy podac wyrazenie,
# ktorego wynikiem jest liczba
print napis[4:len(napis)] # efg
print napis[4:]           # efg

Jeśli przed dwukropkiem pozostawisz wolne miejsce, a po nim umieścisz jakąś liczbę, to otrzymasz fragment od początku do umieszczonego numeru. Jeśli usuniesz również drugą liczbę, to otrzymasz cały napis.

napis = "abcdef"
print napis[-1]    # f
print napis[-4:-2] # cd
print napis[-4:]   # cdef
print napis[:-2]   # abcd

W nawiasach możesz umieścić nawet liczby ujemne. Dzięki temu znaki będą liczone od końca, a nie od początku. To oznacza, że -3 to trzeci znak od końca.

napis = "Witaj"
print napis.upper() # WITAJ
print napis.lower() # witaj

Pierwsza linijka zamienia wszystkie małe litery w napisie na duże. Analogicznie druga linijka zamienia duże na małe.

napis = "Witaj Alu"
print napis.startswith("Witaj") # True
print napis.startswith("Czesc") # False
print napis.endswith("Alu")     # True
print napis.endswith("swiecie") # False

Te fragmenty kodu służą do ustalenia, czy napis zaczyna się lub kończy od danego ciągu znaków. Pierwszy zwróci True, ponieważ napis zaczyna się od "Witaj". Drugi zwróci False, ponieważ napis oczywiście nie zaczyna się od "Czesc".

napis = "Ala ma kota."
tablica_slow = napis.split(" ")
print tablica_slow # ['Ala', 'ma', 'kota']

To rozbije napis na kilka napisów zebranych razem w tablicy. Tutaj przykładowym "rozdzielaczem" jest spacja.

Ćwiczenie

Zmień napis na początku kodu tak, aby zostały wyświetlone takie wartości, jakie podano w komentarzach


Copyright © learnpython.org. Read our Terms of Use and Privacy Policy