Ahogy az előző részben ígértem a stringekről külön írok pár szót.
A stringek nem megváltoztatható változók, tehát, ha egy stringnek értéket adtunk, nem lehet az értékét megváltoztatni, csak egy új értékadással felülírni.
Ennek a cikknek nem célja minden a stringeket érintő művelet ismertetése (rengeteg van belőlük), csak a gyakrabban használtakra térünk ki.
Kezdjük az elején
Az értékadás és az összeadás srtingek esetén is értelmezett:
a="Hallo"
b="World"
c=a+" "+b
print(c)
Hallo World
Ahogy a nem túl komplikált példaprogram mutatja, a stringek esetén az összeadás az összeadásban szereplő részstringek összefűzését jelenti.
Lehetőség van a string karaktereire való hivatkozásra:
a='Hallo World' print(a[0]) H print(a[1]) a
Ha a stringet tartalmazó változó után szögletes zárójelben megadjuk a betű sorszámát, megkapjuk az adott pozícióban álló betűt. A sorszámozás nullától indul, tehát az első karaktert a 0 indexel érjük el.
Természetesen lehetőség van a string egy szakaszának meghatározására is:
print(a[0:5]) Hallo print(a[1:5]) allo
A szögletes zárójelben az első szám az első megjelenítendő karakter, a második az utolsó megjelenítendő karakter utáni (az ötös sorszámú karaktert már nem jeleníti meg)
Lehetőség van a string vége felől számolni a karaktereket, ilyenkor negatív számokat használunk. Az utolsó karakter jele a -1:
print(a[-1])
d
print(a[-2])
l
print(a[0:-1])
Hallo Worl
print(a[-3:-1])
rl
lehetőség van a string elejére vagy végére való hivatkozásra:
print(a[6:]) World print(a[1:]) allo World print(a[:5]) Hallo
Mivel a string unmutable (nem megváltoztatható) a következő értékadás hibát eredményez:
a[0]=h
A feladat természetesen megoldható, de másképpen:
print('h'+a[1:])
hallo World
Lehetőség van arra, hogy egyes karaktereket kicseréljünk a stringben, az eredmény egy új string lesz.
print(a.replace('l','L')) HaLLo WorLd
Na nézzünk egy gyakran használt példát:
Tételezzük fel, hogy érkezik egy árlista angol nyelvbeállításokkal. Ilyenkor tizedespontot használnak. A magyar szokás a tizedes vessző
sz='123.456'
print(sz.replace('.',','))
123,456
Gyakori feladat, hogy a kezdeti illetve záró szóközöket kell eltávolítani
a=' Hallo World '
print(a.strip())
Hallo World
Természetesen lehetőség van csak a kezdeti szóközök eltávolítására
a=' Hallo World ' print(a.lstrip()+'#') Hallo World #
Ha a záró szóközöket kell levágni
a=' Hallo World ' print(a.rstrip()+'#') Hallo World#
Természetesen az lstrip és az rstrip használatával is el lehet érni azt, mint a strip-el
a=' Hallo World ' a=a.rstrip() print(a.lstrip()+'#') Hallo World#
Ez a feladat egy sorban is megoldható
a=' Hallo World '
print(a.lstrip().rstrip()+'#')
Hallo World#
van olyan, hogy egy karakter előfordulását szeretnénk megszámolni
print(a.count('l'))
3
szükség lehet, az adott karakter első előfordulásának a pozíciójára
a='Hallo World' print(a.index('l')) 2 print(a[ a.index('l') ])
A string hosszát (karakterszámát) is meg lehet határozni. Mivel a len() függvény a string hosszát adja meg, az utolsó karakter indexe len(a)-1
print(len(a)) 11 print(a[len(a)-1]) d print(a[len(a)]) Hibaüzenet ad, mert a karakterek indexe 0-tól indul, ezért a len(a) az utolsó karakter utánra mutat.
Ha egy stringgel egy sorban több műveletet végzünk, akkor azok balról jobbra hajtódnak végre.
print(a.replace(' ',',').index(','))
5
A következő rész további változótípusokkal foglalkozik