Nizi znakov

Nizi znakov so zaporedja črk, številk in ločil. Tvorimo jih lahko preprosto s pomočjo navednic. Uporabljamo lahko enojne navednice (apostrofe) ali dvojne (narekovaje). Nize lahko  na primer dodelimo spremenljivkam in jih kasneje tako naslavljamo:

txt1 = 'Pozdravljen svet!'
txt2 = "Programiranje je zabavno"


Dostopanje do nizov

Python ne podpira posameznih znakov. Te obravnavamo kot niz znakov z dolžino 1. Posamezen znak v nizu je torej podniz.

Podniz naslavljamo tako, da uporabimo oglate oklepaje in indeks, ki kaže začetek podniza. Lahko pa navedemo indeks začetka podniza in indeks znaka za nizom.

Primer:



          


Opazimo, da indeks v zaporedjih (v našem primeru nizih znakov) začne z vrednostjo 0. Zato je za podniz1 izpisal znak P, za podniz2 pa rogr

Kadarkoli lahko posodobimo niz tako, da spremenljivki dodelimo nek drug niz. Pri tem lahko uporabimo tudi dele prejšnjega niza.

Primer:



          

Pri izvedbi tega programčka dobimo izpis "Pozdrav soncu".

Pobežni znaki (escape characters)

Naslednja tabela prikazuje nekatere znake, ki jih ne moremo natisniti, imajo pa nek poseben pomen. Pri njihovi navedbi v nizu uporabljamo povratnico (vzvratno poševno črto)

Označba s povratnico
Opis oziroma pomen
\a Zvonček oziroma alarm
\b Povratek za eno mesto nazaj (backspace)
\e Pobežni znak (Escape)
\f Pomik na naslednjo vrstico (Formfeed)
\n Skok v novo vrstico
\r Povratek vozička (skok na začetek vrstice)
\s Presledek
\t Tabulator
\v Vertikalni tabulator
\x Znak x
\nnn Osmiška notacija, pri tem je n znak v območju  0.7
\xnn Šestnajstiška notacija, pri tem so znaki v območju 0.9, a.f, ali A.F


Operatorji na nizih

Imejmo spremenljivko a, ki naslavlja niz "Pozdrav", in spremenljivko b, ki naslavlja niz "Soncu". Pokažimo možne operatorje nad tema dvema nizoma:

Operator Opis Primer
+ Veriženje: sešteje oziroma združi oba operanda v nov niz st1 + b bo dal PozdravSoncu
* Ponavljanje: Tvori nov niz z veriženjem vel kopij istega niza a*2 bo dal PozdravPozdrav
[] Rezina : vrne podniz z znakom pod danim indeksom a[2] bo dal z
[ : ] Območje rezine - Vrne podniz z znaki v danem območju a[1:4] bo dal ozd
in Članstvo: Vrne True, če znak obstaja v danem nizu z in a bo dal True

not in

Članstvo: Vrne True, če znaka ni v danem nizu M not in bo dal True
r/R operator "r" pomeni Raw String. Izniči dejanski pomen pobežnih znakov. "r" je lahko mala ali velika črka, ki mora biti postavljena pred prvo navednico. Sintaksa za surove nize je popolnoma enaka kot pri običajnih nizih z izjemo operaterja surovega niza, črke "r", ki je pred narekovaji. print r'\n' prints \n and print R'\n'prints \n
% Format Oblikuje (formatira) niz Več o tem v nadaljevanju


Oblikovanje (formatiranje) niza

Uporabimo operator %.

print "Moje ime je %s, moja teža je %d kg!" % ('Janez', 65)

When the above code is executed, it produces the following result −

My name is Zara and weight is 21 kg!

Seznam vseh simbolov, ki jih skupaj z znakom % uporabimo pri oblikovanju:

Simbol formata Pretvorba
%c znak
%s Pred formatiranjem pretvori niz s str()
%i decimalno celo število s predznakom
%d decimalno število s predznakom
%u decimalno število brez predznaka
%o osmiško število
%x

šestnajstiško število (male črke)

%X šestnajstiško število (velike črke)
%e notacija z eksponentom (z malim 'e')
%E

notacija z eksponentom (veliki 'E')

%f realno število z decimalno piko
%g krajša oblika za %f in %e
%G krajša oblika za %f in %E

Poleg tega imamo še naslednje simbole in možnosti

Simbol Kaj naredimo
*

argument določa širino oziroma natančnost

- leva poravnava
+ prikaz predznaka
<sp> pusti presledek pred pozitivnim številom
# dodaj osmiško vodečo ničlo( '0' ) ali šestnajstiško vodeče '0x' ali '0X' glede na to, ali smo uporabili 'x' ali 'X'.
0 zapolni na levi z ničlami(namesto s presledki)
% '%%' imamo en sam literal '%'
(var)

preslikava spremenljivke (argumenti slovarja)

m.n. m je minimalna celotna širina in n je število cifer za decimalno piko.

Trojne navednice

V Pythonu lahko s trojnimi navednicami imamo nize, ki so razširjeni preko več vrstic. Kot trojno navednico lahko uporabimoi tri apostrofe ali tri narekovaje.

Nizi Unicode

Normalni nizi so interno kodirani kot 8 bitni ASCII, Unicode pa pomni znake s 16 biti. To omogoča tudi uporabo posebnih znakov, vključno z našimi šumniki


 


Vgrajene metode za nize

Python ima za delo z nizi več vgrajenih metod. Metode na nizih uporabimo tako:

rezultat = niz.metoda()


V spodnjem oknu vidimo nekaj primerov. Preskusimo lahko pa tudi druge metode::



          

Metoda Opis metode
capitalize() Začetnica niza bo velika črka
center(sirina, polnilo) Vrne niz, zapolnjen sz znakom polnila do podane širine. Prvoten niz bo centriran.
count(str,i1,i2) Šteje, kolikokrat nastopi str v nizu (ali podnizu, če sta podana začetni in končni indeks)
decode(encoding='UTF-8',errors='strict') Dekodira niz s podanim kodekom
encode(encoding='UTF-8',errors='strict') Vrne kodiran niz
endswith(pripona, i1, i2) Ugotovi, ali se niz (ali njegov podniz, če sta podana indeksa začetka in konca) konča s podano pripono. Tedaj vrne True, sicer vrne False.
expandtabs(velikost) Razširi tabulatorje v nizu. Če velikost ni podana, bo tabulator ekvivalente 8 presledkom
find(niz2,i1, i2) Ugotovi, ali niz2 nastopa v nizu in verne njegov indeks. Če sta podana indeksa i1, i2, išče v delu niza. Če niza niz2 ne najde, vrne -1
index(niz2, i1, i2) isto kot find(), a sproži izjemo, če niza niz2 ne najde.
isalnum() Vrne True, če ima niz vsaj en znak in so vsi znaki v nizu alfanumerični. Sicer vrne False.
isalpha() Vrne True, če ima niz vsaj en znak in so vsi znaki v nizu črke. Sicer vrne False.
isdigit() Vrne True, če so vsi znaki v nizu številke. Sicer vrne False.
islower() Vrne True, če ima niz vsaj en znak in med njimi ni velikih črk. Sicer vrne False.
isnumeric() Vrne True, če ima unicode niz le števila. Sicer vrne False.
isspace() Vrne True, če ima niz le presledke. Sicer vrne False.
istitle() Vrne True, če se v nizu vse besede začnejo z veliko začetnico, ostale črke pa so male. Sicer vrne False.
isupper() Vrne True, če je v nizu vsaj ena črka in so vse črke velike.
join(zaporedje) Poveže predstavitve nizov, podanih v zaporedju, v nov niz z ločili.
len(string) Vrne dolžino niza
ljust(širina[, polnilo]) Vrne levo poravnan niz, ki je do podane širine zapolnjen z znakom polnila.
lower() V nizu prevori vse velike črke v male.
lstrip() Odstrani vse vodeče presledke v nizu.
maketrans() Vrne preslikovalno tabelo, ki jo uporabimo v funkciji translate.
max(niz) Vrne maksimalni alfabetični znak v podanem nizu.
min(niz) Vrne minimalni alfabetični znak v podanem nizu.
replace(staro, novo [, maks]) Nadomesti vse nastope starega niza z novim. Morebitni maks pove maksimalnom število zamenjav. occurrences if max given.

rfind(niz2, i1,i2) Isto kot find(), vendar vzvratno iskanje v nizu.
rindex(niz2, i1, i2) Isto kot index(), le vzvratno iskanje v nizu
rjust(širina[, polnilo]) Vrne ldesno poravnan niz, ki je do podane širine zapolnjen z znakom polnila.
rstrip() Odstrani vse presledke na repu niza.
split(separator, num) Razbije niz glede na ločilo separator. in vrne seznam teh podnizov. Num lahko pove, na največ koliko podnizov delimo niz.
splitlines( num) Razdeli niz na num vrstic in vrne seznam vrstic, iz katerih so znaki \n odstranjeni.
startswith(niz2, i1,e i2) Ugotovi, če niz ali podniz niza začne s podnizom niz2. Vrne True, če je to res, Sicer vrne False.
strip([znaki]) Na nizu opravi operacijo lstrip() in rstrip().
swapcase() V nizu spremeni vse velike črke v male in obratno.
title() Vrne niz v obliki, ko se vse besede začnejo z veliko začetnico, ostale črke pa so majhne.
translate(table, brisaniZnaki) Preslika niz v skladu s preslikovalno tabelo str(256 znakov), Odstrani tiste znake, ki so navedeni v nizu brisaniZnaki.
upper() Pretvori male črke v velike.
zfill (sirina) Vrne originalni niz, na levi zapolnjen z ničlami do končne celokupne širine. Uporabno za števila. Obdrži predznak.
isdecimal() Vrne True, če ima unicode niz le decimalne znake. Sicer vrne False.