In het leerpad heb je al veel met strings gewerkt bij het vragen naar invoer of het tonen van uitvoer.
String
Een string is een datatype dat gebruikt wordt om tekst of een sliert van tekens bij te houden.
Een string is meer dan een sliert van tekens. Een string noemt men ook een opeenvolging of sequentie van tekens. In het dagelijks leven kom je ook opeenvolgingen tegen, denk bijvoorbeeld aan voertuigen die wachten om een kruispunt over te steken. Typisch voor een opeenvolging is dat je een volgnummer kan geven, bv. het tweede voertuig aan de verkeerslichten.
Bij een string kan je ook een volgnummer geven aan de tekens.
Index
Een index in een string is het volgnummer van de positie van een teken in die string. Het eerste teken van de string heeft index 0. Typisch voor Python is dat je ook kan werken met negatieve indexen.
In onderstaande figuur worden de indexen van de tekens van de string "Python"
getoont.
Dankzij de index kan je nu elk teken in een string opvragen. Dat doe je door na de naam van de variabele die de string bijhoudt, de index tussen vierkante haken te schrijven. Een voorbeeld:
tekst = "Python"
letter = tekst[0]
print(letter)
De bovenstaande code toont het teken "P"
. Let op, ook met tekst[-6]
vraag je dit teken op. Vraag je aan een string
het teken op een ongeldige (te grote of te kleine) index, dan krijg je een foutmelding. Zo geeft tekst[8]
de volgende
foutmelding:
IndexError: string index out of range
Nu je weet hoe je een teken uit een string opvraagt, moet het mogelijk zijn om meerdere opeenvolgende tekens uit een string op te vragen.
Index
Slicing in Python betekent dat je een substring uit een string benadert door een beginindex en een eindindex op te geven.
- Startindex: de index van het eerste teken dat je benadert. De beginindex is inclusief.
- Eindindex: de index van het teken na het laatste teken dat je benadert. De eindindex is exclusief.
Stel dat de variabele tekst
de string "Python"
bijhoudt.
Voorbeeld | Resultaat |
---|---|
tekst[2:5] |
"tho" |
tekst[-6:-4] |
"Py" |
tekst[3:6] |
"ton" |
Slicing levert ook een aantal gevaren op:
tekst[4:8]
levert "on"
op. Python probeert bij slicing er dus het beste van te maken. Je krijgt dus geen foutmelding
omdat de eindindex te groot is.tekst[-3:4]
levert niet "Pyth"
of "hon"
op maar "h"
. Het teken op index -3 is "h"
. Het volgende teken staat op index
-2 maar ook op index 4. Omdat 4 vermeld werd als eindindex, wordt het teken "o"
niet meer benaderd.Nog een aantal weetjes:
tekst[:2]
levert "Py"
op.tekst[4:]
levert "on"
op.tekst[5:2:-1]
levert "noh"
op.tekst[::2]
Enkele tekens veranderen in een string is onmogelijk. Stel dat je onderstaande code test.
tekst = "Python"
tekst[1] = "i"
Dan krijg je de volgende foutmelding:
TypeError: 'str' object does not support item assignment
Het veranderen van tekens met slicing werkt dus bijgevolg ook niet. Hoe verander je dan wel correct een teken in een string?
tekst = "Python"
tekst = tekst[0] + "i" + tekst[2:]
Wil je tekens in een string veranderen dan moet je de variabele een nieuwe waarde geven. Dat doe je steeds door het gelijkheidsteken te gebruiken!