Programowanie w języku Python

Operacje na łańcuchach

Łańcuchy znaków i unikod


Łańcuchy znaków służą do przechowywania napisu lub pewnych danych bajtowych. W Pythonie, podobnie jak w większości innych języków programowania tworzymy łańcuchy znaków (ang. string) poprzez umieszczenie danego tekstu w cudzysłowach.
Przykład. Definiowanie łańcucha znaków

>>> text = "Nie za długi tekst"      #(1)
>>> text
'Nie za d\xc5\x82ugi tekst'          #(2)
>> print text
Nie za długi tekst                   #(3)
>>> text2 = 'Kolejny napis, ale bez polskich liter'       #(4)
>>> text2
'Kolejny napis, ale bez polskich liter'
>>> text3 = 'Długi tekst,\nktóry po przecinku znajdzie się w następnej linii'  #(5)
>>> print text3
Długi tekst,
który po przecinku znajdzie się w następnej linii
>>> text4 = r'Tutaj znaki specjalne np.\n \t, czy też \x26 nie zostaną zinterpretowane' #(6)
>>> print text4

Tutaj znaki specjalne np. \n \t, czy też \x26 nie zostaną zinterpretowane

    W ten sposób stworzyliśmy łańcuch znaków "Nie za długi tekst", który z kolei przypisaliśmy do zmiennej text. Zauważmy, że wewnątrz łańcucha mogą się znajdować polskie litery.

    Otrzymany w tym miejscu wynik na wyjściu może się nieco różnić na różnych systemach. Jest to zależne od kodowania znaków w systemie operacyjnym, z którego korzystamy. Komputer uruchomiony przez autorów korzystał z kodowania UTF-8. Zauważmy, że litera ł w systemie UTF-8 to dwa bajty "\xc5\x82".
    Wszystko zostało ładnie wypisane. Tam gdzie jest ł widzimy ł, a nie jakieś "krzaki".
    Łańcuch znaków nie musi być deklarowany w cudzysłowie, może być też ujęty w apostrofach.
    Znaki specjalne wstawiamy dodając odwrotny ukośnik (tzw. backslash) np. \n.
    Możemy także stworzyć łańcuch znaków w tzw. sposób surowy. Aby to uczynić, poprzedzamy łańcuch znaków literą r. Wewnątrz surowego łańcucha znaków znaki specjalne, zawierajace odwrotny ukośnik nie są specjalnie interpretowane. Można powiedzieć, że znaki specjalne w takim łańcuchu nie są znakami specjalnymi. To co napiszemy, to będziemy mieli.

Unikod


Ponieważ mówimy w języku polskim, piszemy w tym języku, a ponadto czytamy w tym języku, zapewne chcielibyśmy tworzyć programy, które dobrze sobie dają radę ze znakami tego języka. Doskonałym do tego rozwiązaniem jest unikod (ang. unicode). Unikod przechowuje nie tylko polskie znaki, ale jest systemem reprezentowania znaków ze wszystkich języków świata

Przykład. Definiowanie unikodowego łańcucha znaków
>>> text = u"Nie za długi tekst"           #(1)
>>> text
u'Nie za d\u0142ugi tekst'          #(2)
>>> print text

Nie za długi tekst

    Aby utworzyć unikodowy napis, dodajemy przedrostek u i tyle.
    Otrzymasz taki sam wynik. Dane przechowywane w unikodzie nie zależą od systemu kodowania z którego korzysta Twój komputer.

Pamiętamy, jak w poprzednim rozdziale powiedzieliśmy, że do notek dokumentacyjnych został dodany przedrostek u, aby Python potrafił poprawnie zinterpretować polskie znaki. Wtedy właśnie wykorzystaliśmy unikod.

Przykład. Unikod w buildConnectionString
def buildConnectionString(params):
    u"""Tworzy łańcuch znaków na podstawie słownika parametrów.
 
    Zwraca łańcuch znaków.
    """