Beantwoord de aanwezigheidsvraag
Laat contains een boolean teruggeven die aangeeft of de complete deeltekst ergens voorkomt. Houd hoofdletters betekenisvol.
Je programma krijgt een bestandslabel met soms een herkenbaar voorvoegsel. Je wilt weten of dat label ermee begint en waar een bepaald woord staat. Dezelfde tekst overal vervangen kan daarbij te veel weghalen; je gaat zoeken voordat je gericht iets verwijdert.
Met part in text krijg je een boolean: staat die reeks codepunten ergens in de tekst? De operator kijkt naar de complete deeltekst. Hij vraagt niet of losse letters verspreid voorkomen en verandert niets aan hoofdletters.
Wil je de positie weten, gebruik dan find. De eerste gevonden positie is een index vanaf nul. Als de deeltekst ontbreekt, geeft deze methode min één terug, zodat je afwezigheid kunt onderscheiden van een vondst op het begin.
Een lege deeltekst is aanwezig en haar eerste positie is nul. Dat lijkt misschien ongewoon, maar maakt het gedrag bij lege invoer voorspelbaar. De opdrachten volgen dit gewone Python-gedrag en behandelen lege zoektekst dus niet als een fout.
Een voorvoegsel is een stukje tekst aan het begin van een andere tekst. text.startswith(prefix) geeft aan of precies dat stuk vooraan staat. Een overeenkomst midden in de string is hiervoor niet genoeg.
removeprefix verwijdert één aanwezig voorvoegsel. Ontbreekt het, dan blijft de tekstwaarde hetzelfde. Deze bewerking verwijdert geen latere overeenkomsten en herhaalt het verwijderen ook niet zolang het voorvoegsel nogmaals verschijnt.
Voorspel eerst de booleans, de positie en de uiteindelijke labels. Dit voorbeeld heeft eigen gegevens en is direct uitvoerbaar.
label = "foto:duinen.jpg"
print("duinen" in label)
print(label.find("duinen"))
print(label.startswith("foto:"))
print(label.removeprefix("foto:"))
print(label.removeprefix("film:"))True 5 True duinen.jpg foto:duinen.jpg
Let op de twee manieren van zoeken: in beantwoordt alleen de aanwezigheidsvraag, find levert een positie op. Een positie in deze oorspronkelijke string verwijst naar haar codepunten. Ga je de tekst eerst veranderen, dan hoort een daarna gevonden index bij die veranderde tekst.
Een vondst op positie nul levert het getal nul op. In een if telt nul als onwaar; min één telt juist als waar. Daardoor draait de volgende foutvariant de betekenis van twee zoekresultaten om.
label = "duinen.jpg"
if label.find("duinen"):
print("Gevonden")
else:
print("Niet gevonden")Niet gevonden
De zoektekst staat vooraan, maar het programma meldt toch dat zij ontbreekt. Vergelijk een zoekpositie daarom expliciet met min één wanneer je haar bestaan wilt controleren. Heb je geen positie nodig, dan is in meestal duidelijker.
Gebruik voor een voorvoegsel niet zomaar lstrip. Die methode behandelt haar argument als een verzameling losse tekens die vooraan verwijderd mogen worden. Zij kent geen complete tag die één keer moet worden weggehaald.
De opdracht remove_tag heeft juist een precies contract: verwijder de meegegeven tag één keer, alleen als hij werkelijk vooraan staat. Hoofdletters en spaties blijven betekenis houden. Een lege tag verandert niets.
Ook de andere functies zijn hoofdlettergevoelig. Maak niet op eigen initiatief alles klein en verwijder geen witruimte: daarmee zou je de aangeleverde tekst en haar posities een andere betekenis geven. Later bekijken we welke aparte afspraken je voor Unicode-vergelijkingen kunt maken.
Laat contains een boolean teruggeven die aangeeft of de complete deeltekst ergens voorkomt. Houd hoofdletters betekenisvol.
Laat position de eerste index van part teruggeven, of min één als part ontbreekt. Lege zoektekst heeft positie nul.
Laat has_prefix een boolean teruggeven die alleen waar is als prefix precies vooraan staat. Ook een leeg voorvoegsel is geldig.
Laat remove_tag de tag één keer verwijderen als hij vooraan staat. Behoud anders alle tekst, inclusief hoofdletters en spaties.
in geeft aanwezigheid; find geeft de eerste index of min één.Hierna bepaal je hoe waarden worden weergegeven met veldbreedtes en precisie.
Voer je code uit en ontdek
wat je hebt gemaakt.
Je hoeft het niet in één keer goed te doen. Na het uitvoeren zie je hier welke stappen al kloppen.