6. Strings#
In het hoofdstuk Datatypes maakte je kennis met de datatypes int, float en string. Daarna leerde je in het hoofdstuk Variabelen hoe je getallen kunt opslaan in variabelen en er vervolgens mee rekenen. Je kunt in variabelen ook stringwaarden (oftewel tekst) opslaan. Letterlijk vertaald betekent string: sliert van tekens, of ook wel tekenreeks.
Wat leer je in dit hoofdstuk
Hoe ga je om met aanhalingstekens in een string.
Hoe kun je escaping gebruiken in een string.
Hoe maak je een meerregelige string.
Hoe plak je strings aan elkaar (concatenatie).
Hoe herhaal je een string (repetitie).
Aanhalingstekens#
In Python maak je een string door aanhalingstekens (') om de tekst te zetten:
Dubbele aanhalingstekens (") mogen ook:
Je ziet dat Python de dubbele aanhalingstekens hier zelf vervangt door enkele. Maar let op, je mag de enkele en dubbele aanhalingstekens niet mixen:
Wanneer je een string begint met een enkel aanhalingsteken, verwacht Python dat de string ook eindigt met een enkel aanhalingsteken, en hetzelfde geldt voor dubbele aanhalingstekens.
Soms wil je binnen een string ook aanhalingstekens gebruiken. Bijvoorbeeld als je de volgende tekst in een variabele wilt opslaan:
Guido zei: "Heb je Monty Python and the Holy Grail al gezien?"
Deze tekst bevat dubbele aanhalingstekens. Wanneer je de string ook zou beginnen en eindigen met dubbele aanhalingstekens raakt Python in de war:
Bij de aanhalingstekens voor het woordje Heb denkt Python dat de string afgelopen is, maar vervolgens ziet het dat er tóch nog tekst volgt. Dat is tegen de taalregels van Python en daarom krijg je een Syntaxerror: invalid syntax melding.
Je kunt het probleem eenvoudig oplossen door de string te beginnen en eindigen met enkele aanhalingstekens. En wanneer je enkele aanhalingstekens in je tekst wilt gebruiken, dan begin en eindig je juist met dubbele aanhalingstekens:
Het gaat echter mis wanneer je binnen een string zowel enkele als dubbele aanhalingstekens wilt gebruiken:
Python ziet dat de string begint met een enkel aanhalingsteken en denkt daardoor dat de string eindigt bij het enkele aanhalingsteken in Python's. Dit probleem kun je op twee manieren oplossen: met escaping of met multiline strings.
Escaping#
Je kunt aan de manier waarop Python aanhalingstekens interpreteert ontsnappen door backslashes (\) te plaatsen voor de aanhalingstekens binnen de string. Python zal dan deze aanhalingsteken niet zien als het begin of einde van een string. Om het effect hiervan goed te zien, gebruik je de print() functie. In onderstaand voorbeeld zie je dat print() de tekst precies weergeeft zoals we willen, terwijl het commando uitspraak de waarde van de variabele toont waarin de buitenste aanhalingstekens en de backslash nog zichtbaar zijn.
Multiline strings#
Een multiline string is een string die begint en eindigt met drie enkele aanhalingstekens ('''). Binnen zo’n string kun je naar hartelust andere aanhalingstekens gebruiken, zolang het maar niet drie enkele aanhalingstekens zijn.
Je ziet dat het effect hetzelfde is al bij escaping. Sterker nog, Python heeft nu zelf een backslash in de string geplaatst om het aanhalingsteken te escapen!
Multiline betekent meerregelig, en een multiline string kan dus ook meerdere regels beslaan:
Escape karakters
Het escape karakter \n is het new line karakter, waardoor Python het vervolg van de string op een nieuwe regel afdrukt. Er zijn meer van dit soort escape karakters, bijvoorbeeld \t, waarmee je een tab kunt invoegen. Tabs worden vaak gebruikt om tekst mooi recht onder elkaar uit te lijnen.
Rekenen met strings#
Met getallen kun je rekenen, maar kan het ook met tekst? Niet echt, maar in Python kun je wel de operators + en * toepassen op strings. Met de eerste voeg je strings samen en met de tweede kun je strings herhalen.
Concatenatie#
Het aan elkaar plakken van twee strings wordt door programmeurs concatenatie genoemd. Een moeilijk woord voor een eenvoudige bewerking, zie de voorbeelden hieronder.
Wanneer je een integer of een float aan een string wilt plakken, moet je eerst naar een string typecasten met de functie str():
Repetitie#
Om een string een aantal keren te herhalen (repeteren), gebruik je de * operator, zie de voorbeelden hieronder.
Opdrachten#
Opdracht 01
Maak in Mu editor een nieuw codebestand en sla het op onder de naam foute_strings.py. Kopieer de onderstaande code naar het bestand:
1# Strings - opdracht 01
2
3print('Goedemorgen allemaal!)
4print("Het is nog vroeg."
5print("Kunt u mij de weg naar Hamelen vertellen meneer?')
6print('De opa's reden in oude auto's')
7print(""Wie dit leest is gek", stond op het briefje.")
8print('Opa vroeg: "Wie van de oma's vind je het eigenaardigst?"')
9print('De geheime code is ' + 112358)
Elk van de regels 3 t/m 9 bevat een of meerdere fouten. Verbeter deze fouten, opdat de teksten goed worden getoond.
Opdracht 02
Maak in Mu editor een nieuw codebestand en sla het op als concatenatie.py. Kopieer de onderstaande code naar het bestand:
1# Strings - opdracht 02
2
3naam = "Galahad"
4leeftijd = 10
5favoriete_eten = "gehaktbrood"
6
7voorsteltekst = ...
8print(voorsteltekst)
Gebruik de variabelen naam, leeftijd en favoriete_eten om op regel 7 de variabele voorsteltekst een waarde te geven, zodanig dat het programma exact (!) de volgende tekst toont:
Hallo! Mijn naam is Galahad. Ik ben 10 jaar oud en mijn favoriete eten is gehaktbrood.
Extra uitdaging: gebruik een escape karakter om ervoor te zorgen dat de derde zin van de tekst op een nieuwe regel begint:
Hallo! Mijn naam is Galahad.
Ik ben 10 jaar oud en mijn favoriete eten is gehaktbrood.