Werken met strings in Python

Leer werken met tekst in Python. Benader elk teken of deel van een string met indexen en uitsneden, doorloop tekst om te tellen, te zoeken en nieuwe strings te maken, en ontdek waarom een string nooit ter plaatse kan worden gewijzigd. Gebruik stringmethoden om hoofdletters en kleine letters te wijzigen, invoer op te schonen en tekst te doorzoeken, te toetsen, te splitsen en samen te voegen. Sluit af met het opmaken van uitvoer met f-strings: afgeronde getallen, scheidingstekens voor duizendtallen, percentages, datums en tijden volgens Amerikaanse notatie en netjes uitgelijnde kolommen.

BeginnerLes 5 van 10 in Cursus Inleiding tot programmeren met Python

Wat je leert

  1. Schrijf stringliterals, meet en combineer strings en gebruik indexen en uitsneden om elk teken of deel van een tekst te benaderen.
    • Schrijf stringliterals en combineer strings
      Maak strings met aanhalingstekens, escapesequenties en driedubbele aanhalingstekens, bepaal hun lengte met len() en combineer ze met + en *.
    • Selecteer afzonderlijke tekens met een index
      Gebruik positieve en negatieve indexen om elk teken van een string te lezen en voorkom één-ernaast-fouten en fouten met lege strings die een IndexError opwerpen.
    • Selecteer delen van een string met uitsneden
      Maak deelstrings met [start:stop] en [start:stop:step], gebruik weggelaten en negatieve posities en voorspel precies welke tekens een uitsnede bevat.
  2. Doorloop een string om te tellen, te zoeken en tekst op te bouwen, en houd er rekening mee dat de tekens van een string nooit ter plaatse kunnen worden gewijzigd.
    • Doorloop de tekens van een string met een lus
      Doorloop elk teken met lussen met for en while, gebruik posities waar die van belang zijn en pas patronen voor tellen, zoeken en accumuleren toe op tekst.
    • Maak nieuwe strings in plaats van bestaande strings te wijzigen
      Leg uit wat het betekent dat strings onwijzigbaar zijn en maak gewijzigde tekst met uitsneden, concatenatie en hernieuwde toekenning.
  3. Roep stringmethoden aan om hoofdletters en kleine letters te wijzigen en tekst op te schonen, deelstrings te vinden en te tellen en te controleren wat een string bevat voordat je die gebruikt.
    • Wijzig hoofdletters en kleine letters en schoon tekst op met methoden
      Roep methoden aan met puntnotatie om hoofdletters en kleine letters te wijzigen, ongewenste tekens te verwijderen, tekst te vervangen en strings op te vullen, en schakel meerdere methoden aaneen.
    • Zoek tekst binnen een string
      Controleer of een deelstring aanwezig is, zoek waar die begint, tel hoe vaak die voorkomt en gebruik de gevonden posities om tekst uit te snijden.
    • Toets en vergelijk strings
      Controleer waarmee een string begint, waarmee die eindigt of waaruit die bestaat, valideer invoer voordat je die omzet en voorspel hoe Python strings vergelijkt en ordent.
  4. Splits een tekstregel in woorden of velden met split() en voeg delen weer samen tot één string met join().
    • Splits een string in een lijst met delen
      Gebruik split() met en zonder scheidingstekst, beperk het aantal splitsingen en zet de delen van een regel om in de waarden die een programma nodig heeft.
    • Voeg strings samen met scheidingstekst
      Combineer veel strings tot één string met join(), kies de scheidingstekst, zet elementen die geen string zijn eerst om en gebruik split() samen met join() om tekst opnieuw vorm te geven.
  5. Maak duidelijke uitvoer door waarden met f-strings in tekst in te voegen, getallen, datums en tijden leesbaar op te maken en resultaten in kolommen uit te lijnen.
    • Voeg waarden in tekst in met f-strings
      Schrijf f-strings die de waarden van variabelen en expressies in tekst plaatsen en herken de oudere stijlen format() en % in bestaande code.
    • Maak getallen, datums en tijden leesbaar op
      Voeg opmaakspecificaties toe om decimalen, afronding, scheidingstekens voor duizendtallen, percentages, plus- en mintekens en voorloopnullen te bepalen, en stel datums en tijden in Amerikaanse notatie samen.
    • Lijn uitvoer uit in kolommen
      Stel veldbreedtes, uitlijning en opvultekens in, kort lange tekst in en combineer deze opties om uitgelijnde tabellen en kassabonnen af te drukken.

Strings in Python: uitleg

5 hoofdstukken

1

Maak strings en selecteer delen ervan

Tekst in een programma heeft zowel inhoud als positie. Een naam kan een spatie bevatten, een bericht kan een regelafbreking bevatten en een code kan de eerste twee letters gescheiden houden van het getal. Je kunt deze strings maken, combineren en precies de tekens selecteren die je nodig hebt. Maak eerst onderscheid tussen de manier waarop tekst in Python wordt geschreven en de waarde die de tekst bevat. Gebruik daarna een beeld van de posities om te voorspellen wat indexen en uitsneden opleveren.

1.1 Schrijf stringliterals en combineer strings

Een string is een sequentie van tekens met het type str. Een string kan een naam, een zin, een code of helemaal geen tekens bevatten. Python bewaart de tekens op volgorde, inclusief spaties en leestekens.

Schrijf de waarde tussen bij elkaar passende aanhalingstekens

Enkele en dubbele aanhalingstekens maken hetzelfde soort waarde: 'hello' en "hello" zijn gelijk. De buitenste aanhalingstekens geven de grenzen aan; het zijn geen tekens in de waarde. Kies aanhalingstekens die eventuele aanhalingstekens binnen de tekst goed leesbaar houden:

message = "It's late"
reply = 'She said "yes"'
empty = ""

In 'It's late' sluit de apostrof de string te vroeg af, wat een SyntaxError veroorzaakt. Dubbele aanhalingstekens lossen dit op, of je kunt 'It\'s late' schrijven. Gebruik rechte aanhalingstekens in code.

Sla regelafbrekingen en backslashes op

Een escapesequentie begint met een backslash. Python leest \n als één regeleinde, \t als één tab en \\ als één backslash. Geëscapete aanhalingstekens, \' en \", plaatsen aanhalingstekens in tekst.

text = "a\nb"
print(len(text))  # 3
print(text)

De laatste aanroep drukt a en b op afzonderlijke regels af. De waarde heeft drie tekens: a, een regeleinde en b. Escapesequenties worden verwerkt wanneer Python de literal leest. De shell toont een representatie met aanhalingstekens en waar nodig escapesequenties; print() toont de tekens zelf. Zo wordt "\x41" bijvoorbeeld "A", zodat de shell de oorspronkelijke escapesequentie niet hoeft te tonen.

Met driedubbele aanhalingstekens kan een literal over meerdere regels lopen. Elke regelafbreking daarin wordt een regeleindeteken:

notice = """Door closed
Use side entrance"""

Een ruwe string heeft een r vóór de aanhalingstekens. In r"C:\new" blijven de backslash en n afzonderlijk, wat zes tekens oplevert. In "C:\new" wordt \n een regeleinde, wat vijf tekens oplevert. Ruwe stringliterals zijn handig als backslashes in de tekst thuishoren.

Meet en combineer tekst

len() telt elk teken, ook spaties: len("Hi there!") is 9 en len("") is 0. Preciezer gezegd telt de functie Unicodecodepunten. len("café") is 4 als é één codepunt is; len("👍🏽") is 2, ook al ziet de emoji eruit als één symbool.

Gebruik + om strings samen te voegen en * om een string te herhalen:

first = "Ada"
last = "Lovelace"
full = first + " " + last  # "Ada Lovelace"
rule = "-" * 10           # ten dashes

Concatenatie voegt niets voor je in. Zonder " " worden de namen "AdaLovelace". Als je "ab" nul keer herhaalt, krijg je de lege string.

Bepaal of cijfers tekst of getallen zijn

Beide operanden van stringconcatenatie moeten strings zijn. "Age: " + 30 werpt een TypeError op; "Age: " + str(30) geeft "Age: 30". Omgekeerd geeft input() tekst terug: "3" + "4" geeft "34". Om hun numerieke waarden op te tellen, zet je ze eerst om: int("3") + int("4") geeft 7.

Belangrijkste punten

  • Een string bevat een geordende sequentie van tekens; de buitenste aanhalingstekens zijn syntaxis.
  • is één regeleindeteken, terwijl ruwe stringliterals de backslash en de daaropvolgende letter afzonderlijk houden.
  • len() telt codepunten, inclusief spaties en leestekens.
  • + voegt strings samen zonder spaties toe te voegen; * herhaalt een string.
  • Zet tekst om in getallen om te rekenen en getallen in tekst om strings samen te voegen.

1.2 Selecteer afzonderlijke tekens met een index

Een index selecteert één teken op basis van zijn positie. Python begint bij nul te tellen, dus de positie van een teken is één minder dan de plaats bij een gewone telling vanaf links.

Breng de posities in beeld

Voor word = "Python" heeft elk teken een niet-negatieve en een negatieve index:

TekenPython
Vanaf het begin012345
Vanaf het einde-6-5-4-3-2-1
word = "Python"
print(word[0])   # P
print(word[1])   # y
print(word[-1])  # n

De vierkante haakjes achter de string selecteren het teken. Het resultaat is een string met lengte één: Python heeft geen apart tekentype. Je kunt geselecteerde tekens samenvoegen, dus word[0] + word[-1] geeft "Pn".

Voor lengte n lopen de geldige indexen van -n tot en met n - 1 als n > 0. Niet-negatieve indexen tellen vanaf het begin; negatieve indexen tellen vanaf het einde. Een index -k selecteert hetzelfde teken als n - k; in dit woord van zes tekens selecteren -2 en 4 allebei "o".

Houd de lengte en de laatste index uit elkaar

len(word) is 6, maar word[6] werpt een IndexError op: er is geen zevende teken. Het laatste teken is word[len(word) - 1], of eenvoudig word[-1]. Te ver gaan vanaf een van beide uiteinden levert een fout op; ook word[-7] werpt een IndexError op.

Een index moet een geheel getal zijn. word[1.0] werpt een TypeError op, ook al heeft het zwevendekommagetal een gehele waarde. Gebruik // bij het berekenen van een middelste positie:

word = "Pyt"
middle = len(word) // 2  # 1
print(word[middle])      # y

De operator / zou 1.5 opleveren, waarmee je geen string kunt indexeren. Bij een oneven lengte selecteert len(word) // 2 het middelste teken. Bij een even lengte selecteert dit het rechter van de twee middelste tekens: "Python"[3] is "h".

Maak initialen van eerste tekens
first = "Grace"
last = "Hopper"
initials = first[0] + last[0]
print(initials)  # GH

Van elke naam wordt het teken op index 0 gebruikt. Met first[-1] zou je "e" krijgen, de laatste letter. Voor deze methode moet elke naam minstens één teken bevatten.

Controleer lege invoer vóór indexering

De lege string heeft lengte nul en geen geldige tekenindex. ""[0] werpt een IndexError op. Een lengtecontrole kan voorkomen dat een programma een teken leest dat niet bestaat:

line = input("Comment: ")
if len(line) > 0 and line[0] == "#":
    print("Comment line")

Python evalueert and van links naar rechts. Als de lengtecontrole onwaar is, slaat Python line[0] over. Als je die twee controles omdraait, wordt eerst de onveilige indexering geprobeerd. Als je alleen wilt weten of een regel begint met "#", werkt line.startswith("#") ook bij lege invoer en geeft het False terug.

Belangrijkste punten

  • Index 0 selecteert het eerste teken; index -1 selecteert het laatste.
  • De laatste niet-negatieve index is len(text) - 1.
  • Indexering geeft een string van één teken terug en werpt een IndexError op voor een ontbrekende positie.
  • Gebruik een geheel getal als index en controleer op lege invoer voordat je een teken selecteert.

1.3 Selecteer delen van een string met uitsneden

Een uitsnede selecteert een aaneengesloten reeks tekens en geeft die terug als string. Hiermee kun je een beginstuk nemen, een einde verwijderen of velden scheiden die vaste posities innemen.

De startwaarde telt mee; de eindgrens niet

Schrijf text[start:stop]. Met s = "Monty Python" geeft s[0:5] de string "Monty" en s[6:12] de string "Python". De spatie staat op index 5, dus de tweede uitsnede begint bij 6.

Stel je de getallen van een uitsnede voor als tussenruimtes. Tussenruimte 0 staat vóór het eerste teken en tussenruimte 5 na de eerste vijf. Alles daartussen nemen levert vijf tekens op. Voor 0 <= start <= stop <= len(text) is de lengte stop - start.

word = "Monty"
print(word[0:4])  # Mont
print(word[0:5])  # Monty

De eindpositie is de eerste positie die wordt weggelaten. Door één op te tellen bij de gewenste laatste index neem je dat laatste teken mee.

Laat een grens weg
UitsnedeBetekenisResultaat voor s
s[:5]Begin tot en met positie 4"Monty"
s[6:]Positie 6 tot en met het einde"Python"
s[:]Volledige string"Monty Python"
s[-6:]Laatste zes tekens"Python"
s[:-1]Alles behalve het laatste teken"Monty Pytho"

Op elke splitsingspositie k geeft s[:k] + s[k:] de string s terug. De uitsneden sluiten op dezelfde tussenruimte aan, zonder ontbrekend of herhaald teken.

Uitsnedegrenzen voorbij de uiteinden worden teruggebracht tot de uiteinden. "cat"[1:100] is "at"; "cat"[5:] is "". Voor een voorwaartse uitsnede geeft een startwaarde op of voorbij de eindgrens een lege string, zoals in s[4:2]. Anders dan bij een index voor één teken werpt een uitsnede buiten het bereik geen IndexError op.

Kies een stapgrootte

De derde plaats in text[start:stop:step] bepaalt hoe ver je tussen geselecteerde posities opschuift:

letters = "abcdefgh"
print(letters[::2])   # aceg
print(letters[1::2])  # bdfh
print(letters[::-1])  # hgfedcba

Een negatieve stapgrootte loopt achteruit. Als beide grenzen zijn weggelaten, begint [::-1] bij het laatste teken en doorloopt het alle tekens in omgekeerde volgorde. Een stapgrootte van nul werpt een ValueError op. De richting moet passen bij de grenzen: de regel hierboven dat een startwaarde op of voorbij de eindgrens een leeg resultaat geeft, geldt voor een positieve stapgrootte.

Pas uitsneden toe op een vaste indeling
d = "2026-07-04"
year = d[:4]
month = d[5:7]
day = d[8:10]
print(month + "/" + day + "/" + year)  # 07/04/2026

De posities werken omdat deze indeling altijd vier cijfers voor het jaar en twee voor de maand en dag gebruikt. Tekst met wisselende veldlengtes moet je doorzoeken of splitsen.

Omkering levert ook een palindroomtest op: word == word[::-1]. "level" voldoet, maar "Level" niet, omdat hoofdletters en kleine letters meetellen. Ken clean = word.lower() toe en toets clean == clean[::-1] om hoofdletters en kleine letters buiten beschouwing te laten.

Belangrijkste punten

  • Een uitsnede bevat de startpositie, maar niet de eindpositie.
  • Met weggelaten grenzen en negatieve posities selecteer je gemakkelijk begin- en eindstukken.
  • Uitsnedegrenzen buiten het bereik worden teruggebracht tot de uiteinden; een stapgrootte van nul werpt een ValueError op.
  • Een negatieve stapgrootte loopt achteruit; [::-1] keert de volledige string om.
  • Uitsneden op vaste posities zijn afhankelijk van een consistente tekstindeling.
2

Verwerk strings teken voor teken

Een lus kan elk teken bekijken, een telling bijhouden, stoppen bij de eerste overeenkomst of een nieuw bericht opbouwen. Dezelfde kleine patronen werken voor veel teksttaken: klinkers tellen, een cijfer vinden of geselecteerde letters verbergen. Strings hebben bovendien een vaste waarde zodra ze zijn gemaakt. Door een lus iteratie voor iteratie te volgen, zie je hoe een programma gewijzigde tekst kan maken terwijl de oorspronkelijke string intact blijft, en waarom een waarde aan een variabele toekennen iets anders is dan een teken wijzigen.

2.1 Doorloop de tekens van een string met een lus

Gebruik een lus wanneer over elk teken een beslissing moet worden genomen. De lus kan overeenkomsten tellen, hun posities gebruiken, bij de eerste overeenkomst stoppen of de tekens verzamelen die in een resultaat thuishoren.

Doorloop tekens rechtstreeks
for ch in "hi!":
    print(ch)

De lusinhoud wordt drie keer uitgevoerd, met ch achtereenvolgens gelijk aan "h", "i" en "!". Bij de lege string wordt de lusinhoud nul keer uitgevoerd. Een lus die de tekens rechtstreeks doorloopt, heeft geen index nodig als je alleen het huidige teken gebruikt.

Initialiseer voor een telling de teller vóór de lus en verhoog die alleen als het teken aan de voorwaarde voldoet:

text = "Programming in Python"
count = 0
for ch in text.lower():
    if ch in "aeiou":
        count += 1
print(count)  # 5

Door alles naar kleine letters om te zetten, voldoen ook klinkers in hoofdletters aan de voorwaarde. De teststring bepaalt welke klinkers worden geteld; y staat er niet in. Als je count binnen de lus opnieuw op nul zou zetten, zou het totaal van eerdere iteraties verloren gaan.

Gebruik posities als naburige tekens van belang zijn

range(len(text)) levert de indexen van nul tot en met de laatste geldige index. Voor een taak waarvoor je zowel de positie als het teken nodig hebt, levert enumerate(text) ze samen:

for i, ch in enumerate("abc"):
    print(i, ch)

Dit drukt 0 a, daarna 1 b en vervolgens 2 c af. De twee lusvariabelen krijgen de index en het teken van elk paar.

Om buren te vergelijken, kan de laatste index niet de huidige positie zijn, omdat er geen volgend teken is:

text = "bookkeeper"
pairs = 0
for i in range(len(text) - 1):
    if text[i] == text[i + 1]:
        pairs += 1
print(pairs)  # 3

De overeenkomsten zijn oo, kk en ee. Met range(len(text)) zou de laatste iteratie text[len(text)] proberen en een IndexError opwerpen.

Houd een positie bij met while
i = 0
while i < len(text):
    print(text[i])
    i += 1

De voorwaarde gebruikt strikt <: positie len(text) ligt voorbij het einde. De verhoging brengt de lus dichter bij het einde; als je die weglaat, blijft de lus bij niet-lege tekst eindeloos hetzelfde teken lezen. Om achteruit te lopen, begin je bij len(text) - 1, ga je door zolang i >= 0 en trek je er bij elke iteratie één van af.

Zoek of verzamel

Stop bij het eerste cijfer in "Room 42B" zodra een overeenkomst is gebruikt:

for ch in "Room 42B":
    if ch.isdigit():
        print(ch)  # 4
        break

Zonder break zouden beide cijfers worden afgedrukt. Voor een eenvoudige aanwezigheidscontrole geeft "4" in text al ja of nee als antwoord.

Om tekst te verzamelen, begin je met result = "" en voeg je elk gewenst teken toe. Voor "a b c" bouw je "abc" op door alleen toe te voegen als ch != " ". De toekenning ch = ch.upper() binnen een lus verandert alleen de lusvariabele; ze verandert niet de tekens die in text zijn opgeslagen.

Belangrijkste punten

  • Een rechtstreekse for-lus doorloopt elk teken op volgorde.
  • Initialiseer tellers en accumulatoren vóór de lus.
  • enumerate() levert elke index samen met het bijbehorende teken.
  • Stop één positie eerder wanneer je text[i + 1] leest.
  • Een while-lus heeft een veilige grens en een bijwerking van de positie nodig.
  • break stopt een zoekactie bij de eerste overeenkomst.

2.2 Maak nieuwe strings in plaats van bestaande strings te wijzigen

Strings zijn onwijzigbaar: hun tekens kunnen niet worden veranderd nadat de string bestaat. Een programma dat tekst lijkt te wijzigen, maakt een andere string en kiest welke variabele daarnaar verwijst.

Lees een teken, maar ken er niets aan toe
name = "Jane"
name[0] = "D"  # TypeError

Met de index kun je "J" lezen, maar je kunt er geen waarde aan toekennen. Ook del name[0] werpt een TypeError op. Om "Dane" te krijgen, combineer je het gewenste eerste teken met het ongewijzigde einde:

name = "Jane"
name = "D" + name[1:]
print(name)  # Dane

Python evalueert eerst de rechterkant en maakt daarbij een nieuwe string. Daarna laat Python name naar dat resultaat verwijzen.

Vervang of voeg in op een bekende positie

Voor een geldige niet-negatieve index i gebruiken deze expressies verschillende uitsneden aan de rechterkant:

TaakExpressie
Teken op i vervangentext[:i] + new + text[i + 1:]
Vóór teken op i invoegentext[:i] + new + text[i:]

Bij vervanging wordt het oude teken overgeslagen; bij invoeging blijft het behouden. Met text = "cat", i = 1 en new = "X" geeft vervanging "cXt", terwijl invoeging "cXat" geeft.

Zet een negatieve index om naar de niet-negatieve tegenhanger voordat je dit vervangingspatroon gebruikt. Voor het laatste teken van "cat" is i = len(text) - 1 gelijk aan 2. Als je -1 rechtstreeks in text[i + 1:] invult, wordt dat text[0:]. Daardoor wordt de volledige oude string toegevoegd en krijg je "caXcat".

Bewaar het resultaat van een methode

Bewerkingsmethoden volgen dezelfde regel van onwijzigbaarheid:

msg = "hello"
msg.upper()
print(msg)       # hello
msg = msg.upper()
print(msg)       # HELLO

De eerste aanroep berekent een resultaat dat het programma weggooit. De toekenning bewaart het tweede resultaat. Stringmethoden wijzigen de oorspronkelijke string nooit, maar hun retourtypen verschillen: upper() geeft een string terug, find() een geheel getal en isdigit() een booleaanse waarde.

Volg twee namen voor één waarde

Na a = "cat" en b = a verwijzen beide variabelen naar "cat". De uitvoering van a = a + "s" geeft a de nieuwe waarde "cats"; b verwijst nog steeds naar "cat". Geen enkel teken in de gedeelde oude string is veranderd. a += "s" voert voor een string dezelfde soort hernieuwde toekenning uit.

Bouw een gewijzigde waarde op in een lus
word = "secret"
masked = ""
for ch in word:
    if ch in "aeiou":
        masked += "*"
    else:
        masked += ch
print(masked)  # s*cr*t
print(word)    # secret

Elke iteratie breidt masked uit met één gekozen teken. Als je in plaats daarvan elk teken vooraan zet met result = ch + result, wordt de tekst omgekeerd: de iteraties over "drawer" bouwen "d", "rd", "ard", "ward", "eward" en "reward" op.

Herhaalde concatenatie is handig voor korte voorbeelden. Als delen al in een lijst staan, bouwt "".join(pieces) rechtstreeks één resultaat op en kan het ook scheidingstekst tussen de delen plaatsen.

Belangrijkste punten

  • Een string kan niet worden gewijzigd door een element toe te kennen of te verwijderen.
  • Vervangen en invoegen bouwen nieuwe strings op uit uitsneden.
  • Bewaar het resultaat van een bewerking door het toe te kennen.
  • Als je opnieuw een waarde aan één variabele toekent, blijven andere variabelen naar de oude waarde verwijzen.
  • Een accumulator bouwt een nieuwe string op, telkens met één gekozen deel.
3

Bewerk, doorzoek en toets tekst met stringmethoden

Met stringmethoden kun je nuttige vragen over tekst stellen en opgeschoonde versies ervan maken. Een programma moet misschien extra spaties in een antwoord accepteren, een scheidingsteken vinden of controleren of een hoeveelheid kan worden omgezet in een getal. Kies een methode op basis van het resultaat dat je nodig hebt: gewijzigde tekst, een positie, een telling of een booleaanse test. Let op exacte overeenkomsten, de waarde die wordt teruggegeven als een zoekactie mislukt en het verschil tussen tekstvolgorde en numerieke volgorde.

3.1 Wijzig hoofdletters en kleine letters en schoon tekst op met methoden

Een methode is een functie die aan een waarde is verbonden. Stringmethoden voeren veelvoorkomende taken uit, zoals hoofdletters en kleine letters wijzigen, invoer aan de randen opschonen en tekst vervangen. Elke aanroep geeft een resultaat terug en laat de oorspronkelijke string ongewijzigd.

Roep een methode aan met puntnotatie

Schrijf value.method(arguments), zoals in "hello".upper(). De ronde haakjes zorgen ervoor dat de aanroep wordt uitgevoerd. name.upper zonder haakjes verwijst naar de methode zelf; het levert geen tekst in hoofdletters op. Met upper(name) wordt geen zelfstandige functie met de naam upper gevonden. Gebruik dir("") om stringmethoden te tonen en help(str.upper) om over een methode te lezen.

Kies een bewerking voor hoofdletters en kleine letters
MethodeResultaat voor het voorbeeld
"Hello".upper()"HELLO"
"Hello".lower()"hello"
"Hello".swapcase()"hELLO"
"the old man".title()"The Old Man"
"hELLO wORLD".capitalize()"Hello world"

capitalize() wijzigt het eerste teken en zet de rest om in kleine letters; title() begint opnieuw met woorden na tekens die geen letters zijn. Daardoor wordt "they're".title() gelijk aan "They'Re", dus automatisch hoofdletters plaatsen in titels moet je soms controleren.

Voor vergelijkingen zonder onderscheid tussen hoofdletters en kleine letters verwerkt casefold() meer gevallen in verschillende talen dan lower(). "Straße".lower() is "straße", terwijl "Straße".casefold() gelijk is aan "strasse". Pas hoofdletternormalisatie toe op beide strings voordat je ze vergelijkt.

Schoon de uiteinden van tekst op

strip() verwijdert witruimte aan het begin en einde, waaronder spaties, tabs en regeleinden. De spatiëring binnen de tekst blijft behouden: " New York \n".strip() is "New York". lstrip() schoont alleen het linkeruiteinde op; rstrip() alleen het rechteruiteinde.

Met een argument verwijdert de methode de opgegeven tekens herhaaldelijk van de uiteinden. Ze verwijdert geen exact woord:

print("...Wow!!!".strip(".!"))          # Wow
print("report.txt".rstrip(".txt"))     # repor
print("report.txt".removesuffix(".txt"))  # report

De laatste t in report behoort ook tot de verzameling te verwijderen tekens en verdwijnt dus. removeprefix() en removesuffix() verwijderen exacte tekst aan een uiteinde; ze zijn beschikbaar in Python 3.9 en later.

Vervang overeenkomsten en schakel bewerkingen aaneen

replace(old, new) vervangt elke exacte overeenkomst. Een derde argument beperkt hoeveel overeenkomsten worden gewijzigd: "a-b-c".replace("-", "", 1) geeft "ab-c". Een lege vervanging verwijdert overeenkomsten. Hoofdletters en kleine letters tellen mee, dus "Cat cat".replace("cat", "dog") geeft "Cat dog".

answer = "  YES \n"
answer = answer.strip().lower()
print(answer == "yes")  # True

De aanroepen worden van links naar rechts uitgevoerd: strip() geeft "YES" terug, daarna geeft lower() "yes" terug. Een keten werkt als de volgende methode past bij het type van het vorige resultaat. Een zoekresultaat is een geheel getal en ondersteunt dus geen methoden voor het opschonen van strings.

Voor opvulling geeft "7".zfill(3) de string "007", voegt "Total".ljust(8) rechts drie spaties toe en geeft "Hi".center(8, "*") de string "***Hi***". rjust() vult links op. Deze breedtes zijn minima; langere tekst blijft volledig behouden.

Belangrijkste punten

  • Gebruik puntnotatie en ronde haakjes om een stringmethode aan te roepen.
  • Bewerkingen voor hoofdletters en kleine letters hebben verschillende taken; casefold() ondersteunt vergelijkingen tussen talen.
  • strip(chars) verwijdert een verzameling tekens van de uiteinden; voor exacte voor- of achtervoegsels zijn removeprefix() of removesuffix() nodig.
  • replace() zoekt naar exacte tekst en kan het aantal wijzigingen beperken.
  • Aaneengeschakelde bewerkingen werken van links naar rechts op elke teruggegeven string.
  • Opvullen voegt tekens toe tot een minimumbreedte is bereikt.

3.2 Zoek tekst binnen een string

Zoeken kan drie verschillende vragen beantwoorden: of tekst voorkomt, waar die begint en hoe vaak die voorkomt. Kies het resultaat dat past bij de beslissing die je programma moet nemen.

Kies een zoekresultaat
HulpmiddelResultaatAls er geen overeenkomst is
sub in textAanwezigheid als True of FalseFalse
text.find(sub)Eerste startindex-1
text.rfind(sub)Laatste startindex-1
text.index(sub)Eerste startindexWerpt ValueError op
text.count(sub)Aantal niet-overlappende overeenkomsten0

Een deelstring is een aaneengesloten reeks tekens. "py" in "happy" is True, maar "hpy" in "happy" is False. De overeenkomst is hoofdlettergevoelig: "Py" in "python" is False. not in keert de aanwezigheidscontrole om. De lege string komt in elke string voor.

Vind het juiste voorkomen
text = "banana"
print(text.find("an"))     # 1
print(text.find("an", 2))  # 3
print(text.rfind("an"))    # 3

De optionele startpositie slaat eerdere mogelijkheden over. De teruggegeven index telt nog steeds vanaf het begin van de volledige string. index() geeft dezelfde positie terug als er een overeenkomst is, maar de fout bij een ontbrekende overeenkomst maakt de methode nuttig als afwezigheid wijst op een onverwacht probleem.

Controleer een positie voordat je een uitsnede maakt
email = "maria.lopez@example.org"
at = email.find("@")
if at != -1:
    user = email[:at]
    domain = email[at + 1:]
    print(user)    # maria.lopez
    print(domain)  # example.org

De zoekactie geeft 11 terug. De eerste uitsnede stopt vóór @; de tweede begint één teken erna. Als de markering zou ontbreken, zou at gelijk zijn aan -1. Als je dat als uitsnedegrens gebruikt, wordt ongemerkt tekst aan het einde geselecteerd. Handel een ontbrekende markering daarom af voordat je delen selecteert.

Gebruik if text.find("x"): niet als aanwezigheidscontrole. Een overeenkomst op index 0 geldt als onwaar in een voorwaarde, terwijl de waarde -1 voor een ontbrekend resultaat als waar geldt. Gebruik if "x" in text: of vergelijk de positie expliciet met -1.

Zoek vanaf een bekende markering

Voor line = "Order #4521 shipped" volgt het getal op # en eindigt het bij de volgende spatie:

start = line.find("#") + 1
end = line.find(" ", start)
number = line[start:end]
print(number)  # 4521

Hier zijn beide markeringen aanwezig. Door de tweede zoekactie bij start te beginnen, sla je de eerdere spatie na Order over. Als markeringen kunnen ontbreken, controleer dan elk onbewerkt zoekresultaat voordat je er één bij optelt of een uitsnede maakt; één optellen bij -1 zou de mislukte zoekactie verhullen door er 0 van te maken.

Tel volledige overeenkomsten

"banana".count("a") is 3 en "banana".count("ana") is 1. De twee mogelijke overeenkomsten met ana overlappen, dus count() telt ze niet allebei. Evenzo is "aaaa".count("aa") gelijk aan 2.

Om hoofdletters en kleine letters buiten beschouwing te laten, zoek je in een omgezette versie, zoals "python" in sentence.lower(). De zoekactie zoekt nog steeds naar een exacte overeenkomst binnen die versie. Voor tellingen en aanwezigheidscontroles kun je de omgezette string rechtstreeks gebruiken; een index hoort bij de specifieke string die is doorzocht.

Belangrijkste punten

  • Gebruik in voor aanwezigheid, een zoekmethode voor de positie en count() voor de frequentie.
  • find() en rfind() geven -1 terug als tekst ontbreekt; index() werpt een ValueError op.
  • Controleer een zoekresultaat voordat je het als index of uitsnedegrens gebruikt.
  • Een startargument slaat eerdere overeenkomsten over, terwijl de indexen voor de volledige string behouden blijven.
  • count() telt niet-overlappende overeenkomsten.

3.3 Toets en vergelijk strings

Stringcontroles geven booleaanse waarden terug die een voorwaarde kunnen sturen. Ze helpen je invoer te accepteren die aan een regel voldoet en tekst in een consistente vorm te vergelijken.

Controleer de uiteinden of de tekens

startswith() en endswith() controleren exacte tekst aan de uiteinden. Met een tuple kan één controle meerdere eindstukken accepteren: name.endswith((".jpg", ".png")). De hoofdletters in "photo.PNG" zorgen ervoor dat die naam niet aan de controle voldoet, tenzij je hem eerst naar kleine letters omzet.

ControleWaar als de niet-lege string bestaat uit…
isalpha()Alleen letters
isalnum()Alleen letters of cijfers
isdigit()Alleen Unicodecijfertekens
isdecimal()Alleen decimale cijfertekens
isspace()Alleen witruimte

Alle vijf geven False terug voor "". Letters hoeven niet Engels te zijn: "café".isalpha() is True. Door de spatie in "hello world" is isalpha() onwaar.

isupper() en islower() kijken naar tekens met een hoofdletter- en kleinelettervariant en vereisen er minstens één. "ABC1".isupper() is True; het cijfer verandert niets aan de hoofdletters. "123" heeft geen tekens met een hoofdletter- en kleinelettervariant, dus beide controles zijn onwaar.

Valideer vóór conversie

Een cijfercontrole beschrijft niet elk getal dat Python kan lezen. "-5".isdigit(), "3.5".isdigit() en " 42".isdigit() zijn onwaar omdat een plus- of minteken, punt of spatie geen cijfer is. Ook "²".isdigit() is waar, hoewel int("²") mislukt. isdecimal() wijst dat bovenschrift af en is geschikt voor invoer van een gewoon niet-negatief geheel getal.

text = input("Tickets: ").strip()
if text.isdecimal() and int(text) > 0:
    print("Accepted")
else:
    print("Enter a positive whole number")

De stringcontrole wordt eerst uitgevoerd. Als die onwaar is, slaat and de conversie over, zodat lege of niet-numerieke invoer veilig wordt afgehandeld. " 12 " wordt "12" en voldoet; "0" wordt veilig omgezet, maar voldoet niet aan de controle op een positieve waarde. Deze regel wijst invoer met een plus- of minteken of decimale punt bewust af.

Een regel voor gebruikersnamen kan lengte- en tekencontroles combineren: 3 <= len(name) <= 12 and name.isalnum(). "ada99" voldoet, "ada 99" voldoet niet aan de tekencontrole en "ad" voldoet niet aan de lengtecontrole.

Vergelijk opgeschoonde tekst

Voor gelijkheid zijn dezelfde tekens in dezelfde volgorde nodig. "Yes" == "yes" en "yes " == "yes" zijn onwaar. Voor antwoorden waarbij hoofdletters, kleine letters en witruimte aan de uiteinden geen rol mogen spelen, vergelijk je typed.strip().casefold() met expected.strip().casefold().

Ordening werkt teken voor teken. Het eerste verschillende Unicodecodepunt is beslissend. ord("A") is 65, ord("Z") is 90 en ord("a") is 97; chr(97) geeft "a". Dus "Zebra" < "apple" is waar. Als de ene string een voorvoegsel van de andere is, komt de kortere eerst: "app" < "apple".

Strings met cijfers gebruiken ook tekenvolgorde: "10" < "9" is waar omdat "1" vóór "9" komt. Zet ze om in getallen wanneer je hoeveelheden vergelijkt. Ook bij letters met een accent moet je opletten: ord("é") is 233, dus "école" > "zoo" is waar. Deze ingebouwde volgorde volgt codepunten, niet de woordenboekvolgorde van een taal.

Belangrijkste punten

  • Stringcontroles geven booleaanse waarden terug; tekencontroles controleren ook of de string niet leeg is.
  • isdecimal() is strenger dan isdigit() voor invoer die bedoeld is voor int().
  • Gebruik een tekencontrole vóór een beschermde numerieke conversie.
  • Schoon beide strings op dezelfde manier op als hoofdletters, kleine letters en spaties aan de uiteinden geen rol mogen spelen.
  • De ordening van strings gebruikt het eerste verschillende codepunt; voor numerieke volgorde zijn numerieke waarden nodig.
4

Splits tekst in delen en voeg delen samen tot tekst

Een tekstregel bevat vaak meerdere nuttige delen: woorden in een bericht, velden in een record of delen van een code. Door te splitsen maak je van die regel een geordende collectie die je kunt bekijken, tellen en omzetten. Door samen te voegen maak je van delen één string met zelfgekozen scheidingstekst. De regels voor scheidingstekst bepalen of lege velden en de oorspronkelijke spatiëring behouden blijven. Die keuze is dus belangrijk wanneer je tekst opschoont of precies moet reconstrueren.

4.1 Splits een string in een lijst met delen

split() zet één string om in een lijst met strings. Een lijst is een geordende collectie tussen vierkante haakjes. Je kunt een element via een index lezen, de elementen met een lus doorlopen of ze tellen met len().

Kies witruimte of een exacte scheidingstekst

Zonder argument behandelt split() een reeks witruimte als één grens en negeert het witruimte aan beide uiteinden:

words = "  the quick  brown fox ".split()
print(words)       # ['the', 'quick', 'brown', 'fox']
print(len(words))  # 4
print(words[0])    # the

Met expliciete scheidingstekst wordt bij elk exact voorkomen gesplitst. Opeenvolgende scheidingsteksten behouden een leeg veld:

fields = "red,green,,blue".split(",")
# ["red", "green", "", "blue"]

Het lege derde element kan een waarde voorstellen die is opengelaten. Het telt nog steeds als een element in de lijst.

ExpressieResultaat
"a b".split()["a", "b"]
"a b".split(" ")["a", "", "b"]
"a,b".split(", ")["a,b"]

Scheidingstekst kan meerdere tekens bevatten, maar die moeten allemaal overeenkomen. Als er geen scheidingstekst voorkomt, bevat het resultaat de volledige oorspronkelijke string als één element. Splitsen op een komma met spatie verschilt daarom van splitsen op een komma.

Beperk hoeveel tekst wordt gesplitst

Het tweede argument, maxsplit, beperkt het aantal splitsingen, niet het aantal elementen dat ontstaat:

print("key=value=more".split("=", 1))
# ["key", "value=more"]
print("archive.tar.gz".rsplit(".", 1))
# ["archive.tar", "gz"]

split() begint links; rsplit() begint rechts. Eén splitsing vanaf rechts scheidt de laatste bestandsextensie zonder bij eerdere punten te splitsen.

Lees velden en zet hoeveelheden om
line = "Lovelace,Ada,1815"
parts = line.split(",")
if len(parts) == 3:
    last = parts[0]
    first = parts[1]
    year = int(parts[2])
    print(f"{first} {last} was born in {year}.")

De uitvoer is "Ada Lovelace was born in 1815.". De lengtecontrole voorkomt dat een ontbrekend element een IndexError veroorzaakt. Ze controleert niet of het jaar numeriek is; daarvoor is een aparte invoerregel nodig als de gegevens ongeldig kunnen zijn.

Elk afgesplitst deel is aanvankelijk een string. Om "3 14 15" op te tellen, initialiseer je total = 0, doorloop je line.split() met een lus en tel je int(part) erbij op. Het resultaat is 32; als je de niet-omgezette delen aaneenvoegt, worden de cijfers samengevoegd.

Expliciete scheidingstekst behoudt omringende spaties. "a, b".split(",") geeft ["a", " b"]. Roep strip() aan op elk deel als die spaties ongewenst zijn.

Herken twee verwante resultaten

splitlines() splitst bij regelafbrekingen: "line one\nline two".splitlines() geeft twee strings. partition("=") geeft altijd een tuple met drie delen terug: de tekst vóór de eerste scheidingstekst, de scheidingstekst en de tekst erna. "user=ada".partition("=") geeft ("user", "=", "ada"); met "user" geeft het ("user", "", "").

Belangrijkste punten

  • split() geeft een geordende lijst met strings terug.
  • Splitsen op witruimte behandelt reeksen als één grens; expliciete scheidingstekst behoudt lege velden.
  • maxsplit beperkt het aantal splitsingen en rsplit() begint rechts.
  • Controleer het aantal velden vóór indexering en zet numerieke velden om voordat je ermee rekent.
  • splitlines() scheidt regels; partition() geeft de tekst ervoor, de scheidingstekst en de tekst erna terug.

4.2 Voeg strings samen met scheidingstekst

join() bouwt één string op uit een sequentie van strings. De string vóór de punt levert de scheidingstekst, die tussen aangrenzende elementen verschijnt.

Zet de scheidingstekst vooraan
colors = ["red", "green", "blue"]
text = ", ".join(colors)
print(text)  # red, green, blue

Lees dit als “gebruik een komma en spatie om de kleuren samen te voegen”. Er staat geen scheidingstekst vóór het eerste element of na het laatste. Je kunt de indeling van de uitvoer wijzigen door alleen de scheidingstekst te wijzigen:

ExpressieResultaat
"".join(["a", "b", "c"])"abc"
"-".join(["a", "b", "c"])"a-b-c"
"\n".join(["a", "b", "c"])Eén element op elke regel

join() hoort bij de string met scheidingstekst. Als je ["a", "b"].join(",") schrijft, krijg je een AttributeError, omdat de lijst geen methode join heeft. Eén aanroep past zich ook aan het aantal delen aan; je hoeft niet voor elke andere lijstlengte een nieuwe keten van +-bewerkingen te schrijven.

Zet delen die geen string zijn eerst om

Alle delen moeten al strings zijn. ", ".join([1, 2, 3]) werpt een TypeError op. map(str, items) past str() op elk element toe, dus dit werkt:

items = [1, 2, 3]
text = " ".join(map(str, items))
print(text)  # 1 2 3

De str die aan map() wordt doorgegeven, is de conversiefunctie. join() ontvangt de omgezette delen en geeft één string terug.

Een string is zelf een sequentie van strings van één teken, dus " ".join("ABC") geeft "A B C". Dit kan handig zijn, maar als je één woord doorgeeft terwijl je een lijst met woorden bedoelde, komen er scheidingstekens tussen de tekens.

Pas spatiëring en scheidingstekst aan
text = "too   many    spaces"
cleaned = " ".join(text.split())
print(cleaned)  # too many spaces

Eerst levert splitsen op witruimte de drie woorden op. Door ze met één spatie samen te voegen, kies je een vaste tussenruimte en blijven er geen spaties aan de uiteinden over. De oorspronkelijke spatiëring gaat bij het splitsen verloren.

Met expliciete scheidingstekst bewaren de lege velden genoeg informatie om de exacte tekst weer op te bouwen. Als s = "a,,b,", geeft s.split(",") de lijst ["a", "", "b", ""] en geeft ",".join(...) weer "a,,b,". Voor die exacte reconstructie moet de scheidingstekst dezelfde zijn.

Als je de scheidingstekst verandert, verandert de indeling: "-".join("2026/07/04".split("/")) geeft "2026-07-04". Hier is replace("/", "-") ook een directe oplossing.

Verzamel een kort resultaat uit woorden

Voor een letterwoord splits je "portable network graphics", begin je met acronym = "" en voeg je voor elk woord word[0].upper() toe. Splitsen op witruimte levert niet-lege woorden op, dus hun eerste tekens bestaan. Zo bouw je "PNG" op. Als de letters al in een lijst staan, bouwt ".".join(["P", "N", "G"]) de string "P.N.G" op, zonder afsluitende punt.

Belangrijkste punten

  • Roep join() aan op de scheidingstekst en geef de delen als argument door.
  • Scheidingstekst verschijnt alleen tussen delen en elk deel moet een string zijn.
  • Splitsen op witruimte en samenvoegen met één spatie maakt de spatiëring gelijkmatig.
  • Samenvoegen met dezelfde expliciete scheidingstekst kan tekst met inbegrip van lege velden reconstrueren.
5

Maak uitvoer op met f-strings

Bruikbare uitvoer combineert een correcte waarde met een leesbare indeling. Een f-string plaatst waarden en expressies rechtstreeks in tekst en laat je vervolgens kiezen hoe elk veld eruitziet: decimalen, groepering, plus- en mintekens, datums of uitgelijnde kolommen. Houd de berekening en de weergave gescheiden. Een veld kan twee decimalen of een ingekorte naam tonen terwijl de oorspronkelijke variabele haar volledige waarde behoudt, klaar voor latere berekeningen of een andere weergave.

5.1 Voeg waarden in tekst in met f-strings

Een f-string is een stringliteral met f of F vóór het openingsaanhalingsteken. Daarin bevatten accolades expressies waarvan de waarden in de tekst worden ingevoegd.

Voeg variabelen en expressies in
name = "Ada"
age = 36
message = f"{name} is {age} years old."
print(message)  # Ada is 36 years old.

Getallen worden binnen een veld automatisch tekst. Hetzelfde bericht zou concatenatie en str(age) kunnen gebruiken, maar de f-string houdt de uiteindelijke indeling op één plaats zichtbaar.

De accolades kunnen rekenkundige expressies, methodeaanroepen of functieaanroepen bevatten:

price = 4.5
qty = 3
print(f"Cost: {price * qty}")  # Cost: 13.5
print(f"Name: {name.upper()}")  # Name: ADA
word = "Python"
print(f"{len(word)} letters")  # 6 letters

Python evalueert elke expressie wanneer de regel wordt uitgevoerd. Een opgeslagen string blijft niet verbonden met de variabelen waarmee die is opgebouwd. Als qty verandert nadat message is opgebouwd, behoudt die string zijn bestaande tekens.

Maak onderscheid tussen gewone tekst en velden

Zonder het voorvoegsel is "Hello {name}" gewone tekst en behoudt die de accolades. Een ontbrekende f is een veelvoorkomende reden dat een programma de variabelenaam afdrukt in plaats van de waarde. Met het voorvoegsel werpt een naam waaraan geen waarde is toegekend een NameError op wanneer de expressie wordt uitgevoerd.

Om een letterlijke accolade weer te geven, verdubbel je die:

x = 5
print(f"{{x}} = {x}")  # {x} = 5

De dubbele accolades leveren de letterlijke tekst {x}. Het enkele paar rond de laatste x levert de waarde ervan.

Houd expressies met aanhalingstekens goed leesbaar

Gebruik binnen een veld de andere soort aanhalingstekens:

print(f"Shout: {'hi'.upper()}")  # Shout: HI

Deze stijl werkt in alle Pythonversies met f-strings, die in 3.6 werden ingevoerd. Python 3.12 en later staan ook toe om binnen het veld de buitenste soort aanhalingstekens opnieuw te gebruiken. Escapesequenties blijven werken in f-strings: f"Name: {name}\nAge: {age}" drukt af op twee regels.

Voor een snelle weergave tijdens het debuggen accepteren Python 3.8 en later = achter een expressie. Met x = 5 geeft f"{x=}" de string "x=5"; met total = 12 geeft f"{total = }" de string "total = 12". Getypte spaties rond de expressie en het gelijkteken verschijnen in de weergave.

Lees oudere opmaakstijlen

Bestaande Pythoncode kan dezelfde tekst op andere manieren opbouwen:

StijlVoorbeeldResultaat
F-stringf"{name} is {age}""Ada is 36"
Stringmethode"{} is {}".format(name, age)"Ada is 36"
Procentopmaak"%s is %d" % (name, age)"Ada is 36"

str.format() vult velden tussen accolades met de argumenten. Genummerde velden kunnen een argument opnieuw gebruiken: "{0} {1} {0}".format("a", "b") geeft "a b a". Bij procentopmaak voegt %s tekst in en %d een geheel getal. Als je die velden herkent, kun je een programma ook lezen wanneer het is geschreven voordat f-strings gebruikelijk waren.

Belangrijkste punten

  • Een f-string heeft een voorvoegsel f nodig en accolades rond elke expressie.
  • Velden worden geëvalueerd wanneer de f-string wordt uitgevoerd; opgeslagen tekst wordt later niet bijgewerkt.
  • Dubbele accolades geven letterlijke accolades weer.
  • str.format() en procentopmaak zijn oudere manieren om waarden in te voegen.

5.2 Maak getallen, datums en tijden leesbaar op

Een opmaakspecificatie bepaalt hoe een waarde wordt weergegeven. Zet een dubbele punt achter de expressie, gevolgd door de aanwijzingen: f"{value:spec}". Opmaak geeft tekst terug en laat de oorspronkelijke numerieke waarde ongewijzigd.

Stel decimalen in en begrijp afronding

.Nf toont precies N cijfers na de decimale punt. f"{3.14159:.2f}" geeft "3.14", f"{2/3:.3f}" geeft "0.667" en f"{5:.2f}" geeft "5.00". .0f toont geen decimale punt: f"{7.6:.0f}" geeft "8".

Bij afronding wordt de daadwerkelijk opgeslagen waarde gebruikt. De meeste decimale breuken zijn zeer nauwkeurige binaire benaderingen. Het zwevendekommagetal 2.675 ligt iets onder die exacte decimale waarde, dus f"{2.675:.2f}" geeft "2.67". Waarden die precies halverwege liggen, worden afgerond op een even laatste cijfer: 0.125 wordt met twee decimalen weergegeven als "0.12", terwijl 0.375 wordt weergegeven als "0.38". f"{2.5:.0f}" geeft "2". Programma’s die exact met geld moeten rekenen, slaan hele centen vaak op als gehele getallen.

Voeg groepering en percentages toe
SpecificatieVoorbeeldresultaat
f"{1234567:,}""1,234,567"
f"{1234567:_}""1_234_567"
f"{1234567.891:,.2f}""1,234,567.89"
f"{0.256:.1%}""25.6%"

Een komma groepeert duizendtallen; de punt leidt de precisie voor decimalen in. Houd voor een bedrag in dollars het dollarteken buiten het veld: met amount = 1250.5 geeft f"${amount:,.2f}" de string "$1,250.50".

Het type % vermenigvuldigt met 100 en voegt % toe. Gebruik een breuk zoals 0.256 om 25.6% weer te geven. Als je 25.6 opgeeft, wordt het weergegeven percentage opnieuw vermenigvuldigd. Zonder expliciete precisie toont % zes decimalen.

Maak gehele getallen en datumdelen op

d is voor gehele getallen. f"{42:d}" werkt, maar f"{3.0:d}" werpt een ValueError op omdat een zwevendekommagetal geen geheel getal is. Een voorloopnul vóór een breedte vult op met nullen; een plusteken vraagt om een zichtbaar plus- of minteken:

print(f"{7:03d}")   # 007
print(f"{5:+d}")    # +5
print(f"{-5:+d}")   # -5

Voor maand 7, dag 4 en jaar 2026 bouwt f"{month:02d}/{day:02d}/{year}" de string "07/04/2026" op. Voor uur 9 en minuut 5 bouwt f"{hour}:{minute:02d}" de string "9:05" op. De voorloopnul voorkomt dat een minuut van één cijfer verschijnt als "9:5".

Combineer aanwijzingen in de juiste volgorde

De volgorde is opvulteken, uitlijning, plus- of minteken, nul, breedte, groepering, precisie, type. Je kunt onderdelen die je niet nodig hebt weglaten. f"{12345.678:>12,.2f}" gebruikt uitlijning rechts, breedte 12, groepering met een komma en twee decimalen, en geeft " 12,345.68".

De precisie kan uit een andere variabele komen: met places = 3 geeft f"{3.14159:.{places}f}" de string "3.142". Dezelfde specificaties werken in velden van format(value, spec) en str.format(). Bewaar het oorspronkelijke getal voor berekeningen; round(value, 2) geeft een afgerond getal terug wanneer de berekening dat nodig heeft.

Belangrijkste punten

  • Een dubbele punt leidt de weergaveaanwijzingen in; de opgeslagen waarde verandert niet.
  • De precisie in vastekommanotatie bepaalt het aantal decimalen en de afronding volgt de opgeslagen waarde.
  • Een komma groepeert duizendtallen; % vermenigvuldigt een breuk met 100.
  • d vereist een geheel getal; voorloopnullen houden datum- en tijddelen leesbaar.
  • Bewaar getallen om mee te rekenen en maak ze op bij de weergave.

5.3 Lijn uitvoer uit in kolommen

Een veldbreedte reserveert een minimaal aantal tekenposities voor een waarde. Door breedtes te combineren maak je korte tabellen en kassabonnen leesbaar in een terminal.

Kies breedte en uitlijning

Strings worden standaard links uitgelijnd en getallen rechts. f"{'cat':6}" geeft "cat ", terwijl f"{42:6}" de string " 42" geeft. Gebruik een uitlijningsteken om expliciet te kiezen:

TekenBetekenisVoorbeeld
<Linksf"{'hi':<6}" geeft "hi "
>Rechtsf"{'hi':>6}" geeft " hi"
^Gecentreerdf"{'hi':^6}" geeft " hi "

Wanneer centreren een oneven aantal spaties overlaat, plaatst de uitlijning van f-strings de extra spatie rechts: f"{'hi':^7}" geeft " hi ".

De breedte is een minimum. f"{'elephant':4}" geeft nog steeds "elephant"; het woord wordt niet afgekapt. Een lang element kan daardoor latere kolommen uit de lijn duwen.

Voeg een opvulteken toe of beperk tekst

Een opvulteken staat direct vóór de uitlijning. f"{'hi':*^10}" geeft "****hi****" en f"{7:0>3}" geeft "007". Opvulling vereist een uitlijningsteken. f"{'':-^20}" vult een leeg veld met twintig streepjes.

De precisie van een string beperkt het aantal weergegeven tekens:

place = "Washington"
print(f"{place:.4}")      # Wash
print(f"|{place:10.4}|")  # |Wash      |

De precisie beperkt de weergegeven tekst eerst tot vier tekens; de breedte vult die vervolgens op tot tien. Gebruik een passende breedte en precisie als tekst binnen een vaste kolom moet blijven. De oorspronkelijke place is nog steeds "Washington".

Bouw één regel van een kassabon op
item = "Apples"
qty = 3
price = 4.50
row = f"{item:<8}{qty:>4}{qty * price:>9.2f}"
print(row)

Het resultaat is "Apples 3 13.50". Het artikelveld heeft zes letters en twee spaties. Het hoeveelheidsveld voegt drie spaties toe vóór 3. Het kostenveld voegt vier spaties toe vóór 13.50, dat vijf tekens heeft. Samen nemen de velden 21 tekens in.

Gebruik die breedtes opnieuw voor brood (1 à 2,25) en koffie (2 à 11,00). Hun regels zijn "Bread 1 2.25" en "Coffee 2 22.00". Een totaalregel kan de eerste twee velden combineren:

print(f"{'Total':<12}{37.75:>9.2f}")
# "Total           37.75"

Het kostenveld begint op dezelfde positie en heeft dezelfde precisie voor decimalen, zodat de bedragen onder elkaar staan.

Stem de indeling af op de weergave

Kies breedtes die ruimte laten voor de langste elementen en tussenruimte, of kort tekst bewust in. Een variabele kan een breedte leveren: met w = 10 vult f"{name:<{w}}" name op tot tien tekens.

Kolommen op basis van tekens hebben een lettertype met vaste tekenbreedte nodig, zoals een terminal gebruikt. Voor gewone opvulling buiten een f-string gedragen ljust() en rjust() zich als < en >. center() en ^ centreren allebei tekst, maar kunnen oneven opvulling anders verdelen: "hi".center(7) geeft " hi ", terwijl f"{'hi':^7}" de string " hi " geeft.

Belangrijkste punten

  • De breedte bepaalt een minimum; de uitlijning bepaalt waar de opvulling komt.
  • Het opvulteken gaat vóór de uitlijning en de precisie van een string beperkt het aantal weergegeven tekens.
  • Gebruik op elke regel dezelfde veldbreedtes en precisie voor decimalen.
  • Kies een weergave met vaste tekenbreedte voor kolommen op basis van tekens.
  • center() en centreren met een f-string kunnen oneven opvulling verschillend plaatsen.

Strings in Python: voorbeelden

5 Walkthroughs

1

Haal een code teken voor teken uit elkaar

14 stappen
Maak een label, lees posities en selecteer of keer gekozen delen om.
  1. 1
    IntroductieLees een opslaglabel

    Een opslaglabel bevat letters, een koppelteken en cijfers: "Box-482". Dit is een string en elk teken heeft een index. Een programma heeft mogelijk de eerste letter, het laatste cijfer of het volledige getalgedeelte (een slice) nodig.

    Je gaat het label opbouwen, de posities tekenen en de delen selecteren. Volg bij elke stap de exacte tekens; een spatie of scheidingsteken beïnvloedt posities net als een letter.

  2. 2
    UitlegScheid syntaxis van opgeslagen tekst

    Een string is een geordende sequentie van tekens. De buitenste aanhalingstekens vertellen Python waar een literal begint en eindigt; ze komen niet in de waarde terecht.

    label = "Box-482"
    print(len(label))  # 7
    

    Het koppelteken is een van de zeven tekens. Enkele aanhalingstekens zouden dezelfde waarde kunnen aangeven. Je kunt ook lege tekst opslaan met "", die lengte nul heeft.

  3. 3
    VoorbeeldBouw het label op uit delen

    Begin met het woord en een numerieke code:

    kind = "Box"
    number = 482
    label = kind + "-" + str(number)
    

    str(number) maakt "482", waarna de twee concatenaties "Box-482" opbouwen. Het koppelteken verschijnt omdat het als deel is opgegeven. Als je str() weglaat, wordt geprobeerd een string en een geheel getal samen te voegen, wat een TypeError opwerpt.

  4. 4
    UitdagingTel de tekens van de waarde met een escapesequentie

    Een korte melding is opgeslagen als notice = "A\nB!". Wat is de lengte ervan en hoeveel regels geeft print(notice) weer?

    ---reveal---

    De lengte is 4: A, één regeleinde, B en !. Afdrukken geeft twee regels weer, met A op de eerste en B! op de tweede. De escapesequentie wordt verwerkt wanneer de literal wordt gelezen; bij het afdrukken zie je het regeleinde dat al in de waarde zit.

  5. 5
    AnalogieGeef elke positie een nummer

    Zie het label als zeven genummerde plaatsen op een rij. De nummering begint bij nul:

    Character: B o x - 4 8 2
    Index:     0 1 2 3 4 5 6
    

    label[0] geeft "B" en label[4] geeft "4". Het resultaat is een string van één teken, ook als het op een getal lijkt. Positie 7 zou de achtste plaats zijn, die in dit label niet bestaat.

  6. 6
    UitlegTel terug vanaf het laatste teken

    Negatieve indexen gebruiken het einde als referentiepunt. Voor "Box-482" is label[-1] gelijk aan "2" en label[-3] aan "4".

    De niet-negatieve tegenhanger van -3 is len(label) - 3, oftewel 4. Beide selecteren hetzelfde teken. Er is geen negatieve nulpositie aan het einde: -0 is gewoon 0, dus die selecteert nog steeds het eerste teken.

  7. 7
    UitdagingSelecteer een teken zonder code uit te voeren

    Wat is voor code = "Tin-739" de waarde van code[-2]? Zou code[len(code)] het laatste teken selecteren?

    ---reveal---

    code[-2] is "3", het teken direct vóór de laatste 9. code[len(code)] werpt een IndexError op: lengte zeven betekent indexen nul tot en met zes. De expressie voor het laatste teken is code[len(code) - 1], of code[-1].

  8. 8
    TipBescherm het lezen van een teken

    Lege invoer heeft geen teken op index nul. Zet de lengtecontrole vóór het lezen van het teken:

    if len(label) > 0 and label[0] == "B":
        print("Begins with B")
    

    Als de eerste controle onwaar is, slaat and de tweede over. Deze volgorde is van belang: als label[0] eerst zou staan, zou dat bij lege invoer al mislukken voordat Python de lengtecontrole kan bereiken.

  9. 9
    UitlegSelecteer het volledige getalgedeelte

    Een uitsnede bevat de startpositie maar niet de eindpositie:

    label = "Box-482"
    number_text = label[4:7]
    print(number_text)  # 482
    

    De posities 4, 5 en 6 leveren de cijfers. Eindgrens 7 is de grens na het laatste teken. Omdat de selectie tot het einde loopt, geeft label[4:] hetzelfde resultaat. Er vindt geen conversie plaats; de uitsnede is nog steeds tekst.

  10. 10
    VoorbeeldLaat de twee uitsneden op elkaar aansluiten

    Het linkerdeel eindigt bij de grens waar het getalgedeelte begint:

    left = label[:4]   # "Box-"
    right = label[4:]  # "482"
    print(left + right)  # Box-482
    

    De gemeenschappelijke grens 4 laat de delen zonder tussenruimte of overlap op elkaar aansluiten. Daarom bouwt s[:k] + s[k:] een string weer op. Met label[:3] zou het koppelteken in het gereconstrueerde resultaat ontbreken.

  11. 11
    KernpuntEen uitsnedegrens kan voorbij het einde liggen

    Vergelijk label[99] met label[4:99]. De enkele index werpt een IndexError op, maar de uitsnede geeft "482".

    Een uitsnede brengt een grens voorbij de string terug tot het beschikbare einde. label[99:] geeft daarom lege tekst. Dit is handig om maximaal een bepaalde hoeveelheid tekst te nemen, maar het betekent ook dat een onjuiste uitsnede ongemerkt minder tekens kan teruggeven dan je verwachtte.

  12. 12
    VoorbeeldKeer alleen de geselecteerde cijfers om

    Haal eerst de cijfers eruit en keer dan die nieuwe string om:

    digits = label[4:]
    backward = digits[::-1]
    print(backward)  # 284
    

    Een negatieve stapgrootte loopt achteruit. Als beide grenzen zijn weggelaten, doorloopt de uitsnede alle tekens van het laatste tot het eerste. Een positieve stapgrootte van twee zou daarentegen om en om posities overslaan. Een stapgrootte van nul is ongeldig en werpt een ValueError op.

  13. 13
    UitdagingMaak een gewijzigd label

    Wat is voor label = "Jar-916" de waarde van label[:4] + label[4:][::-1]? Leg uit welk deel zijn volgorde behoudt.

    ---reveal---

    Het resultaat is "Jar-619". De eerste uitsnede houdt "Jar-" ongewijzigd. De tweede selecteert eerst "916", waarna [::-1] alleen die cijfers omkeert tot "619". Concatenatie voegt de twee resultaten samen zonder nog een scheidingsteken toe te voegen.

  14. 14
    SamenvattingHoud posities en grenzen uit elkaar

    Gebruik een index voor één teken en een uitsnede voor een deel. Posities beginnen bij nul; negatieve indexen tellen vanaf het einde. Een uitsnede laat de eindpositie weg en de stapgrootte bepaalt de richting en tussenafstand.

    Volg eerst de opgeslagen tekens en evalueer dan elke selectie voordat je de resultaten combineert.

2

Maak een gemaskeerde code met een lus

12 stappen
Volg tellers en stringaccumulatie stap voor stap en leg vervolgens uit waarom de oorspronkelijke tekst ongewijzigd blijft.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieBehoud cijfers en verberg letters
  2. 2
    UitlegStel de lopende resultaten in
  3. 3
    VoorbeeldNeem voor elk teken een beslissing
  4. 4
    VoorbeeldVolg de overige iteraties
  5. 5
    UitdagingVolg een andere invoer stap voor stap
  6. 6
    VerbandVoeg alleen posities toe wanneer dat nodig is
  7. 7
    TipLaat ruimte voor een volgend teken
  8. 8
    KernpuntDe oude string is niet gewijzigd
  9. 9
    VoorbeeldBewaar een andere naam voor de oude waarde
  10. 10
    VoorbeeldVervang één positie met uitsneden
  11. 11
    UitdagingVolg zowel de waarde als de bewaarde kopie
  12. 12
    SamenvattingVolg elke variabele door de lus
3

Lees en valideer een bericht met markeringen

16 stappen
Schoon gebruikerstekst op, vind markeringen en pas invoercontroles toe vóór numerieke conversie.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVerwerk een kort verzoek
  2. 2
    VoorbeeldVerwijder witruimte aan de uiteinden
  3. 3
    UitlegRoep methoden aan en schakel ze aaneen
  4. 4
    UitdagingKies een bewerking voor een exact einde
  5. 5
    VerbandVergelijk tekst met hoofdletternormalisatie
  6. 6
    UitlegVraag of, waar of hoe vaak
  7. 7
    VoorbeeldZoek het begin van de naam
  8. 8
    VoorbeeldZoek het einde na het begin
  9. 9
    TipBehandel een positie niet als aanwezigheid
  10. 10
    UitdagingHaal een veld tussen markeringen uit
  11. 11
    VoorbeeldHaal de tekst met het aantal plaatsen eruit
  12. 12
    UitlegControleer vóór de conversie
  13. 13
    UitdagingPas dezelfde invoerregel toe
  14. 14
    KernpuntEen tekstvergelijking vergelijkt geen hoeveelheden
  15. 15
    UitdagingVerwerk een opgeschoond veld en een mislukte zoekactie
  16. 16
    SamenvattingGebruik elk resultaat voor de bedoelde taak
4

Zet een record om in velden en leesbare tekst

12 stappen
Splits een klein record, zet de hoeveelheden om en voeg delen samen met bewust gekozen regels voor scheidingstekst.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieLees een eenvoudig record
  2. 2
    UitlegSplits op een exact scheidingsteken
  3. 3
    VoorbeeldControleer de velden voordat je ze leest
  4. 4
    VoorbeeldReken met omgezette waarden
  5. 5
    UitdagingBehoud een ontbrekende waarde
  6. 6
    KernpuntSplitsen op witruimte kiest andere delen
  7. 7
    TipStop na de splitsing die je nodig hebt
  8. 8
    VoorbeeldVoeg delen voor de weergave samen met scheidingstekst
  9. 9
    UitdagingVoorspel een samenvoeging met lege delen
  10. 10
    VerbandKies tussen opschonen en exacte reconstructie
  11. 11
    UitdagingHerstel een recordweergave
  12. 12
    SamenvattingVolg de typen door het record
5

Maak een kleine kassabon op

16 stappen
Bouw f-strings, kies getalopmaak en lijn een regel van een kassabon uit zonder de onderliggende gegevens te veranderen.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieGeef een berekening een leesbare indeling
  2. 2
    VoorbeeldVoeg het regelbedrag in
  3. 3
    UitdagingLet op wanneer de expressie wordt uitgevoerd
  4. 4
    TipHoud de veldsyntaxis zichtbaar
  5. 5
    UitlegKies twee decimalen
  6. 6
    KernpuntRond de daadwerkelijk opgeslagen waarde af
  7. 7
    VoorbeeldGeef een percentage weer
  8. 8
    UitdagingCombineer groepering en decimalen
  9. 9
    VerbandVul datum- en tijddelen op
  10. 10
    UitlegReserveer de velden van de kassabon
  11. 11
    VoorbeeldTel de spaties in één regel
  12. 12
    TipBreedte kort een lang artikel niet in
  13. 13
    UitdagingLees een opgevuld en gecentreerd veld
  14. 14
    UitdagingBouw een tweede regel van de kassabon
  15. 15
    VerbandStem het lettertype af op de indeling
  16. 16
    SamenvattingHoud berekening en presentatie gescheiden

Strings in Python: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Schoon tekst op, doorzoek en valideer die10 Oefenvragen

Vraag 1 van 10

Wat is "abababa".count("aba")?
  1. 3
  2. 1
  3. 0
  4. 2
Toon antwoordVerberg antwoord
Antwoord: D
Eén overeenkomst gebruikt de indexen 0–2 en de volgende niet-overlappende overeenkomst gebruikt 4–6, wat twee oplevert. Er is ook een mogelijke overeenkomst op 2–4, maar die overlapt een getelde overeenkomst. count() telt niet elke mogelijke startpositie wanneer de overeenkomende deelstrings tekens delen.

Vraag 2 van 10

Wat geeft " Go Home ".strip().lower() terug?
  1. "gohome" (geen spaties)
  2. " go home " (spaties aan de uiteinden behouden)
  3. "Go Home" (oorspronkelijke hoofdletters en kleine letters)
  4. "go home" (één spatie binnen de tekst)
Toon antwoordVerberg antwoord
Antwoord: D
strip() verwijdert de spaties aan de uiteinden en behoudt de spatie tussen de woorden. lower() verandert vervolgens de letters, wat "go home" geeft. Voor het resultaat "gohome" zouden ook spaties binnen de tekst moeten worden verwijderd, maar het verwijderen van randtekens werkt alleen aan de uiteinden van de string.

Vraag 3 van 10

Wat geeft "test.txt".rstrip(".txt") terug?
  1. "test"
  2. "test."
  3. "tes"
  4. "test.tx"
Toon antwoordVerberg antwoord
Antwoord: C
Het argument bevat verwijderbare tekens: een punt, t en x. De methode verwijdert het achtervoegsel en daarna de laatste t van "test", en stopt bij s, dus het resultaat is "tes". Om precies het einde ".txt" te verwijderen, is removesuffix() nodig.

Vraag 4 van 10

Wat is "A-a-a".replace("a", "x", 1).lower()?
  1. "a-x-a" (eerste overeenkomst met kleine letter gewijzigd)
  2. "a-x-x" (beide overeenkomsten met kleine letters gewijzigd)
  3. "x-a-a" (beginletter gewijzigd)
  4. "A-x-a" (oorspronkelijke hoofdletter behouden)
Toon antwoordVerberg antwoord
Antwoord: A
De vervanging is hoofdlettergevoelig en beperkt tot één overeenkomst, dus ze verandert de eerste kleine letter a en laat de eerste hoofdletter A ongemoeid. Als je het resultaat daarna omzet naar kleine letters, krijg je "a-x-a". Als je eerst naar kleine letters zou omzetten, zou een ander voorkomen worden vervangen en krijg je een ander resultaat.

Vraag 5 van 10

Wat is "cocoa".rfind("co")?
  1. 0
  2. 2
  3. 3
  4. 4
Toon antwoordVerberg antwoord
Antwoord: B
De deelstring "co" begint op de indexen 0 en 2 en rfind() geeft de laatste startindex terug, 2. De methode telt posities nog steeds vanaf de linkerkant van de volledige string. Een resultaat 3 zou het laatste teken van die overeenkomst aanwijzen in plaats van het begin.

Vraag 6 van 10

Wat wordt afgedrukt?

s = "label"
p = s.find(":")
print(s[p:])
  1. l
  2. label
  3. Een lege regel
  4. De code werpt een ValueError op.
Toon antwoordVerberg antwoord
Antwoord: A
De dubbele punt ontbreekt, dus find() geeft -1 terug. Als startwaarde van een uitsnede selecteert dat het laatste teken, "l", dat zonder aanhalingstekens wordt afgedrukt. Een ontbrekende overeenkomst werpt bij find() geen ValueError op; dat zou het gedrag van index() zijn.

Vraag 7 van 10

Welke tekst wordt geselecteerd?

s = "Item [K9] ready [Q2]"
a = s.find("[")
b = s.find("]", a)
result = s[a + 1:b]
  1. "[K9"
  2. "Q2"
  3. "K9"
  4. "K9] ready [Q2"
Toon antwoordVerberg antwoord
Antwoord: C
De eerste zoekactie vindt het eerste openingshaakje en de tweede vindt vanaf die positie het eerste sluitingshaakje. Door de uitsnede één teken na a te beginnen en vóór b te stoppen, blijft alleen "K9" over. Als je het laatste sluitingshaakje zou gebruiken, zouden de tussenliggende tekst en het tweede openingshaakje worden meegenomen.

Vraag 8 van 10

Een formulier gebruikt s = raw.strip() en daarna s.isdecimal() and int(s) > 0. Voldoet de onbewerkte invoer " 08 " en welk geheel getal stelt die voor?
  1. De invoer voldoet niet vanwege de spaties aan de uiteinden.
  2. De invoer voldoet en stelt 8 voor.
  3. De invoer voldoet en behoudt de tekst "08".
  4. De invoer voldoet niet vanwege de voorloopnul.
Toon antwoordVerberg antwoord
Antwoord: B
Na het verwijderen van randspaties krijg je "08", waarvan de tekens decimale cijfers zijn, en int("08") is het positieve gehele getal 8. De omringende spaties doen niet meer mee aan de controle. De voorloopnul laat de conversie niet mislukken en de aanroep van int() levert een getal op in plaats van een string te behouden.

Vraag 9 van 10

Welk paar levert a == b en a.strip().casefold() == b.strip().casefold() op voor a = " Cedar " en b = "cedar"?
  1. True, True
  2. False, False
  3. False, True
  4. True, False
Toon antwoordVerberg antwoord
Antwoord: C
De oorspronkelijke waarden verschillen zowel in spaties aan de uiteinden als in hoofdletters en kleine letters, dus rechtstreekse gelijkheid is onwaar. Door beide uiteinden op te schonen en hoofdletternormalisatie toe te passen, worden beide waarden "cedar", dus de tweede vergelijking is waar. Gelijkheid negeert verschillen in presentatie niet tenzij het programma ze expliciet verwijdert.

Vraag 10 van 10

Welk paar leveren "24" < "7" en int("24") < int("7") op?
  1. False, False
  2. True, False
  3. False, True
  4. True, True
Toon antwoordVerberg antwoord
Antwoord: B
De stringvergelijking is waar omdat het eerste teken "2" vóór "7" komt. Na conversie zijn de hoeveelheden 24 en 7, dus de numerieke vergelijking is onwaar. De tekstvergelijking wordt beslist bij het eerste verschillende teken; ze zet strings met cijfers niet automatisch om.
Set 2: Lees literals, indexen en uitsneden10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Wat is "notebook"[2:5]?
  1. "teb"
  2. "tebo"
  3. "ote"
  4. "te"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat is het resultaat van "map"[1:50]?
  1. "a"
  2. ""
  3. "ap"
  4. De code werpt een IndexError op.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Wat geeft "0123456789"[1:8:3] terug?
  1. "148"
  2. "147"
  3. "1357"
  4. "1478"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Wat is s[-4:][::-1] + s[:3] bij s = "red-blue"?
  1. "derblue"
  2. "eulb-red"
  3. "eulbred"
  4. "blueeulb"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat is de waarde van len("x\ty!")?
  1. 5
  2. 4
  3. 6
  4. 3
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Welke tekst levert "Tag: " + str(8 * 2) op?
  1. "Tag: 82"
  2. "Tag: 8 * 2"
  3. "Tag: 16.0"
  4. "Tag: 16"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Wat slaat r"D:\temp" op na de dubbele punt?
  1. Een backslash gevolgd door temp.
  2. Een tab gevolgd door emp.
  3. Twee backslashes gevolgd door temp.
  4. Een regeleinde gevolgd door temp.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Wat is code[-2] bij code = "R7K2"?
  1. "7"
  2. "2"
  3. "K"
  4. "R"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Wat geeft word[len(word) // 2] terug bij word = "orbit"?
  1. "r"
  2. "i"
  3. De code werpt een TypeError op.
  4. "b"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Wat gebeurt er als deze code wordt uitgevoerd met line = ""?

if len(line) > 0 and line[0] == ";":
    print("Skip")
  1. De code werpt een IndexError op vóór de lengtecontrole.
  2. De code drukt niets af en werpt geen fout op.
  3. De code drukt eenmaal "Skip" af en stopt.
  4. De code werpt een TypeError op bij de voorwaarde.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Volg lussen en nieuwe stringwaarden10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Hoe vaak wordt de lusinhoud van for ch in "a b!": uitgevoerd?
  1. 2
  2. 3
  3. 4
  4. 5
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat wordt afgedrukt?

total = 0
for ch in "Route 68":
    if ch.isdecimal():
        total += int(ch)
print(total)
  1. 14
  2. 2
  3. 68
  4. 8
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Wat wordt afgedrukt?

for ch in "Cab 53A":
    if ch.isdigit():
        print(ch)
        break
  1. 3
  2. 53
  3. 5 en daarna 3 op afzonderlijke regels
  4. 5
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Wat wordt afgedrukt?

for i, ch in enumerate("lamp"):
    if i % 2 == 1:
        print(ch, end="")
  1. lm
  2. ap
  3. am
  4. lp
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Welke waarde wordt afgedrukt?

s = "aaabb"
pairs = 0
for i in range(len(s) - 1):
    if s[i] == s[i + 1]:
        pairs += 1
print(pairs)
  1. 2
  2. 3
  3. 4
  4. 1
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Welke tekst wordt afgedrukt?

s = "north"
i = len(s) - 1
result = ""
while i >= 0:
    result += s[i]
    i -= 2
print(result)
  1. hrn
  2. htr
  3. nrt
  4. hon
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Wat bevat b na deze code?

a = "pine"
b = a
a = a.upper()
  1. "PINE" (alles in hoofdletters)
  2. "Pine" (alleen de beginletter als hoofdletter)
  3. "" (lege tekst)
  4. "pine" (de oorspronkelijke tekst)
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Wat levert s[:2] + "X" + s[3:] op bij s = "stone"?
  1. "stXone"
  2. "sXone"
  3. "stXne"
  4. "stXo"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Welk paar waarden wordt afgedrukt?

word = "muse"
result = ""
for ch in word:
    if ch in "aeiou":
        result = ch.upper() + result
    else:
        result = ch + result
print(word, result)
  1. muse mUsE (ongewijzigd woord, gemaskeerd resultaat in oorspronkelijke volgorde)
  2. mUsE EsUm (gemaskeerd woord, omgekeerd gemaskeerd resultaat)
  3. muse Esum (ongewijzigd woord, één hoofdletter in het resultaat)
  4. muse EsUm (ongewijzigd woord, omgekeerd gemaskeerd resultaat)
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Wat drukt deze code af?

s = "  west  "
s.strip()
s = s + "!"
print(len(s))
  1. 5
  2. 6
  3. 9
  4. 8
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Splits records en bouw tekst opnieuw op10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Wat is len(" one\ttwo three ".split())?
  1. 4
  2. 3
  3. 5
  4. 6
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat geeft "A||C|".split("|") terug?
  1. ["A", "", "C", ""]
  2. ["A", "C"]
  3. ["A", "", "C"]
  4. ["A", "|C|"]
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Wat is "red;blue".split("; ")?
  1. ["red", "blue"]
  2. ["red", " blue"]
  3. ["red;blue"]
  4. ["red;", "blue"]
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Wat wordt afgedrukt?

parts = "Mina;4;6".split(";")
total = int(parts[1]) + int(parts[2])
print(f"{parts[0]}:{total}")
  1. Mina:46
  2. Mina:4
  3. Mina:6
  4. Mina:10
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat is "mode=fast=quiet".split("=", 1)[1]?
  1. "fast"
  2. "quiet"
  3. "fast=quiet"
  4. "mode=fast"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Wat geeft "status".partition(":") terug?
  1. ("", ":", "status")
  2. ("status", ":", "")
  3. ("status", "", "")
  4. ("", "", "status")
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Wat levert " / ".join("ab") op?
  1. "a / b"
  2. "ab"
  3. "a / b / "
  4. " / a / b"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Wat is "-".join("x::z:".split(":"))?
  1. "x-z"
  2. "x--z-"
  3. "x-z-"
  4. "x--z"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Welke tekst is opgeslagen in result = " ".join(" bright\n blue sky ".split())?
  1. " bright blue sky "
  2. "brightblue sky"
  3. "bright blue sky"
  4. "bright blue sky"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Wat levert ": ".join(map(str, [6, 11])) op?
  1. "6: 11"
  2. "6:11"
  3. "6: 11: "
  4. De code werpt een TypeError op.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Maak leesbare waarden en kolommen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Wat levert f"{'otter':3}" op?
  1. "ott"
  2. "ter"
  3. "otter"
  4. De code werpt een ValueError op.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat levert f"Hi, {name.upper()}!" op bij name = "Luca"?
  1. "Hi, Luca!" (oorspronkelijke schrijfwijze van de naam)
  2. "Hi, {name.upper()}!" (niet-geëvalueerd veld)
  3. "Hi, LUCA!" (naam in hoofdletters)
  4. "HI, LUCA!" (volledig bericht in hoofdletters)
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Welke tekst wordt afgedrukt?

n = 4
label = f"{{n}}={n + 2}"
n = 9
print(label)
  1. {n}=11
  2. {n}=6
  3. 4=6
  4. 9=11
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Wat is f"{4826.5:,.2f}"?
  1. "4826.50"
  2. "4.826,50"
  3. "4,826.5"
  4. "4,826.50"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat is f"{0.0375:.1%}"?
  1. "0.0%"
  2. "3.8%"
  3. "3.7%"
  4. "37.5%"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Welk paar leveren f"{n:.2f}" en n == 0.125 op bij n = 0.125?
  1. "0.12", True
  2. "0.13", True
  3. "0.12", False
  4. "0.13", False
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Wat levert f"{month:02d}/{day:02d}/{year} {hour}:{minute:02d}" op bij month = 11, day = 6, year = 2028, hour = 7 en minute = 3?
  1. "11/06/2028 7:03"
  2. "06/11/2028 7:03"
  3. "11/6/2028 7:3"
  4. "11/06/2028 07:03"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Wat levert f"|{'owl':>5}|" op?
  1. "|owl |"
  2. "| owl |"
  3. "| owl|"
  4. "| owl|"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Wat zijn de inhoud en lengte van f"{name:6.4}" bij name = "seahorse"?
  1. "seahorse", lengte 8
  2. "seah", lengte 4
  3. "seah ", lengte 6
  4. " seah", lengte 6
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Wat is f"{item:<5}{qty:>2}{qty * price:>7.2f}" voor item = "Tea", qty = 2 en price = 3.75?
  1. "Tea 2 3.75"
  2. "Tea 2 7.50"
  3. "Tea 2 7.50"
  4. "Tea 2 7.500"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

69 Kernbegrippen, elk met een definitie

A

Aaneenschakelen van methoden
Bij aaneenschakelen van methoden roep je een methode aan op het resultaat van een eerdere aanroep, zodat elke bewerking de direct daarvoor teruggegeven waarde ontvangt.
Bij het aaneenschakelen van methoden in " OK ".strip().lower() wordt eerst "OK" teruggegeven en dat resultaat daarna omgezet in "ok".
Accumulator
Een accumulator is een variabele die tijdens iteraties een lopend resultaat opbouwt, zoals een totaal of een nieuw opgebouwde string.
Een stringaccumulator die bij "" begint, kan alleen tekens verzamelen die geen spatie zijn om van "a b c" de string "abc" te maken.
Afronden naar even
Afronden naar even kiest het even behouden cijfer wanneer een opgeslagen waarde precies halverwege twee mogelijke afgeronde resultaten ligt.
Door afronden naar even worden de exacte tussenwaarden 0.125 en 0.375 met twee decimalen weergegeven als "0.12" en "0.38".

B

Binaire benadering
Een binaire benadering is een opgeslagen zwevendekommawaarde die dicht bij een decimale hoeveelheid ligt en die afronding bij een weergavegrens kan beïnvloeden.
De binaire benadering van het zwevendekommagetal 2.675 is iets te laag, dus opmaak met twee decimalen geeft "2.67".
break
De instructie break verlaat de huidige lus onmiddellijk, zodat een zoekactie naar tekens kan stoppen na het verwerken van het eerste teken dat aan de voorwaarde voldoet.
Een zoekactie naar het eerste cijfer in "Zone 81" kan 8 afdrukken en break uitvoeren, waardoor de latere 1 niet wordt verwerkt.

C

Codepuntconversie
Codepuntconversie gebruikt ord() om het Unicodegetal van een teken te verkrijgen en chr() om het teken bij zo’n getal te verkrijgen.
Codepuntconversie met ord("A") geeft 65 en de omgekeerde conversie met chr(65) geeft "A".
Concatenatie
Concatenatie voegt strings achter elkaar samen tot één string en behoudt alle tekens zonder automatisch scheidingstekst in te voegen.
Concatenatie met "rain" + "coat" geeft "raincoat"; om een spatie toe te voegen is een deel nodig dat een spatie bevat.
Controle op decimale cijfers
Een controle op decimale cijfers, isdecimal(), accepteert niet-lege strings met decimale cijfertekens en wijst plus- en mintekens, decimale punten en spaties af.
Na het verwijderen van spaties aan de uiteinden accepteert de controle op decimale cijfers "007", dat wordt omgezet in het gehele getal zeven.
Conversie met map()
Een conversie met map() past een functie toe op elk invoerelement, zodat str de stringdelen kan leveren die join() vereist.
Een conversie met map() in ", ".join(map(str, [3, 8])) levert strings voordat die worden samengevoegd tot "3, 8".

D

Deelstring
Een deelstring is een aaneengesloten sequentie van tekens binnen een andere string, die je met een uitsnede kunt selecteren of door te zoeken kunt vinden.
De tekst "light" is een deelstring van "daylight", maar "dyl" niet, omdat die letters niet aaneengesloten zijn.
Doorlopen van een string
Bij het doorlopen van een string bezoek je tekens in een gekozen volgorde, vaak met een rechtstreekse for-lus of een while-lus met een index.
Bij het doorlopen van "go!" bezoek je eerst g, dan o en dan !, zodat je voor elk teken een aparte beslissing kunt nemen.

E

Eén-ernaast-fout
Een één-ernaast-fout gebruikt een grens die één positie te vroeg of te laat ligt, vaak doordat de lengte van een sequentie wordt verward met de laatste index.
Een één-ernaast-fout in text[len(text)] leest voorbij het einde; door één af te trekken krijg je de index van het laatste teken.
Elementtoekenning
Elementtoekenning probeert een sequentie-element op een index te vervangen; strings wijzen dit af omdat hun tekens niet ter plaatse kunnen worden gewijzigd.
Elementtoekenning met word[1] = "x" werpt bij een string een TypeError op, ook als index één een geldige positie is.
enumerate()
De functie enumerate() levert elk element van een sequentie samen met de index, zodat een lus beide kan gebruiken zonder afzonderlijk opzoeken.
Een lus over enumerate("sun") ontvangt paren van index en teken, beginnend met 0, "s" en eindigend met 2, "n".
Escapesequentie
Een escapesequentie gebruikt een backslash en daaropvolgende tekens in een literal om een teken voor te stellen, zoals een regeleinde, tab of aanhalingsteken.
In "up\ndown" slaat de escapesequentie \n één regeleinde op, zodat de woorden bij het afdrukken op twee regels komen.
Expressieveld
Een expressieveld is een deel van een f-string tussen accolades waarvan de expressie wordt geëvalueerd wanneer de string wordt opgebouwd.
Het expressieveld in f"Total: {3 * 4}" berekent twaalf voordat het resultaat na het label wordt ingevoegd.

F

F-string
Een f-string is een stringliteral met f die expressies binnen velden tussen accolades evalueert en hun waarden in de resulterende tekst invoegt.
Met count = 7 bouwt de f-string f"Found {count}" de tekst "Found 7" op zonder expliciete conversie van getal naar tekst.
find()
De methode find() geeft de startindex van de eerste overeenkomende deelstring terug, of -1 als de gezochte tekst niet voorkomt.
De zoekactie "lemon".find("mo") geeft twee terug, terwijl "lemon".find("xy") bij geen overeenkomst min één teruggeeft.

G

Groepering in duizendtallen
Groepering in duizendtallen verdeelt grote getallen in leesbare groepen met een komma of onderstrepingsteken in een opmaakspecificatie.
Groepering in duizendtallen in f"{7654321:,}" geeft "7,654,321" weer en scheidt elke groep van drie cijfers.

H

Hernieuwde toekenning
Een hernieuwde toekenning laat een variabele naar een andere waarde verwijzen, zonder de eerdere waarde of andere namen voor die waarde te veranderen.
Wanneer a "red" bevat, laat de hernieuwde toekenning met a += "!" a naar "red!" verwijzen, terwijl een andere variabele nog steeds "red" kan bevatten.
Hoofdlettergevoelige vergelijking
Een hoofdlettergevoelige vergelijking behandelt hoofdletters en kleine letters als verschillend, zodat overeenkomende woorden toch ongelijk kunnen zijn.
Bij een hoofdlettergevoelige vergelijking is "Ready" == "ready" onwaar totdat beide waarden dezelfde hoofdletters en kleine letters gebruiken.
Hoofdletternormalisatie
Hoofdletternormalisatie verwijdert onderscheid tussen hoofdletters en kleine letters voor een vergelijking, inclusief enkele taalspecifieke wijzigingen die gewone omzetting naar kleine letters niet uitvoert.
Hoofdletternormalisatie zet zowel "Straße" als "STRASSE" om in "strasse", zodat de schrijfwijzen als gelijk kunnen worden vergeleken.

I

Index
Een index is een gehele positie waarmee je één teken van een string selecteert, waarbij het eerste teken op positie nul staat.
Voor label = "desk" selecteert index 2 de waarde "s", omdat de posities beginnen met d op nul.
IndexError
Een IndexError meldt dat een gebruikte sequentie-index geen element heeft, bijvoorbeeld bij het selecteren van een positie voorbij het einde van een string.
De expressie "cup"[3] werpt een IndexError op, omdat de drie tekens de posities nul tot en met twee innemen.

K

Kortsluitevaluatie
Kortsluitevaluatie slaat een booleaanse operand over wanneer een eerder resultaat de voorwaarde al beslist, zodat een eerste controle een latere bewerking kan beschermen.
Kortsluitevaluatie in s.isdecimal() and int(s) > 0 slaat de conversie over wanneer de tekencontrole niet slaagt.

L

Leeg veld
Een leeg veld is een element van nul tekens dat behouden blijft wanneer expliciete scheidingstekens naast elkaar of aan het begin of einde van een string staan.
Door "a;;c" op ";" te splitsen, blijft op de tweede positie een leeg veld behouden, waardoor een ontbrekende recordwaarde zichtbaar blijft.
Lege scheidingstekst
Lege scheidingstekst is de string van nul tekens die je met join() gebruikt om delen samen te voegen zonder extra tekens ertussen.
Een lege scheidingstekst in "".join(["a", "b", "c"]) geeft "abc" en behoudt de volgorde van de delen.
Letterlijke accolade
Een letterlijke accolade is een accoladeteken dat je als tekst in een f-string weergeeft door het te verdubbelen, los van de syntaxis voor expressievelden.
In f"{{open}}" wordt een letterlijke openingsaccolade { vóór open weergegeven zonder Python te vragen die naam te evalueren.
Lettertype met vaste tekenbreedte
Een lettertype met vaste tekenbreedte geeft elke tekenpositie dezelfde visuele breedte, zodat herhaalde velden met een vaste breedte als tekstkolommen kunnen uitlijnen.
Een lettertype met vaste tekenbreedte in een terminal laat kostenvelden van gelijke breedte uitlijnen omdat elke tekenpositie evenveel ruimte inneemt.
Lexicografische volgorde
Lexicografische volgorde vergelijkt sequenties van links naar rechts en gebruikt het codepunt van het eerste verschillende teken of plaatst een korter voorvoegsel eerst.
De lexicografische volgorde plaatst "19" vóór "3", omdat de eerste verschillende tekens de vergelijking beslissen.
Lidmaatschapscontrole
Een lidmaatschapscontrole gebruikt in of not in om te controleren of een deelstring voorkomt en geeft een booleaanse waarde terug zonder de positie te geven.
De lidmaatschapscontrole "ice" in "spice" is waar, terwijl "Ice" met een hoofdletter niet overeenkomt met dezelfde tekst.
Lijst
Een lijst is een geordende collectie elementen tussen vierkante haakjes; het splitsen van een string geeft een lijst terug waarvan de elementen strings zijn.
Na het splitsen van "oak,elm" op een komma bevat de lijst twee elementen en selecteert index één de string "elm".

M

Maximaal aantal splitsingen
Het argument maximaal aantal splitsingen beperkt hoeveel splitsingen split() of rsplit() maakt, zodat de rest samen in een niet-gesplitst deel blijft.
Als je het maximale aantal splitsingen op één zet, wordt "a=b=c" vanaf links gesplitst in "a" en "b=c", waarbij latere gelijktekens behouden blijven.
Maximaal weergegeven stringlengte
De maximaal weergegeven stringlengte beperkt hoeveel teksttekens een veld toont, zodat je een maximale tekstlengte met een minimumbreedte kunt combineren.
De maximaal weergegeven stringlengte in f"{'sunshine':6.3}" toont "sun" en drie spaties zonder het oorspronkelijke woord te veranderen.

N

Negatieve index
Een negatieve index selecteert een teken door vanaf het einde te tellen, waarbij -1 het laatste en -len(text) het eerste teken is.
In "cloud" selecteert de negatieve index -1 de waarde "d", terwijl -2 het voorafgaande teken "u" selecteert.
Niet-overlappende overeenkomsten
Niet-overlappende overeenkomsten zijn voorkomens die geen tekenposities opnieuw gebruiken. Dat is de regel voor overeenkomsten die count() gebruikt.
De twee niet-overlappende overeenkomsten in "aaaa".count("aa") gebruiken verschillende tekenposities, dus de telling is twee.

O

Onwijzigbaarheid
Onwijzigbaarheid betekent dat een waarde niet ter plaatse kan worden veranderd; een stringbewerking moet een andere waarde opleveren om een variabele andere tekst te geven.
Door de onwijzigbaarheid van strings mislukt name[0] = "B", terwijl name = "B" + name[1:] wel nieuwe tekst opbouwt.
Opmaakspecificatie
Een opmaakspecificatie is een verzameling weergaveaanwijzingen na de dubbele punt in een veld, die details zoals precisie, groepering of breedte bepaalt.
In f"{8.5:.2f}" kiest de opmaakspecificatie .2f twee decimalen en levert voor de weergave "8.50" op.
Opvullen
Opvullen voegt tekens toe om een minimale veldbreedte te bereiken, met spaties, nullen of een gekozen opvulteken, terwijl langere waarden behouden blijven.
Opvullen met "5".zfill(3) levert "005" op, terwijl de al langere "1234" bij breedte drie ongewijzigd blijft.
Opvullen met voorloopnullen
Opvullen met voorloopnullen voegt nullen aan het begin toe om een minimale numerieke breedte te bereiken, zodat korte gehele getallen geschikt zijn voor codes en datum- of tijddelen.
Opvullen met voorloopnullen in f"{4:02d}" geeft "04" weer, zodat een minuut van één cijfer een veld van twee cijfers vult.
Opvulteken
Een opvulteken vervangt gewone opvulspaties wanneer het direct vóór een uitlijningssymbool in een opmaakspecificatie staat.
Een sterretje als opvulteken in f"{'ok':*^6}" geeft "**ok**" en vult ongebruikte posities rond de tekst op.

P

Palindroom
Een palindroom is tekst die voorwaarts en achterwaarts hetzelfde leest. Je kunt deze eigenschap toetsen door een string met de omgekeerde versie te vergelijken.
Het palindroom "radar" voldoet aan word == word[::-1]; bij gemengde hoofdletters en kleine letters is opschonen nodig als dat onderscheid niet moet meetellen.
Percentageopmaak
Percentageopmaak gebruikt % om een breuk voor de weergave met 100 te vermenigvuldigen en een procentteken toe te voegen, met optionele precisie voor decimalen.
Percentageopmaak .0% toont 0.18 als "18%"; als je achttien opgeeft, wordt de waarde een tweede keer geschaald.

R

Randtekens verwijderen
Randtekens verwijderen haalt ongewenste tekens van de uiteinden van een string, standaard witruimte of anders een opgegeven verzameling verwijderbare tekens.
Bij het verwijderen van randtekens uit "..hello!!" met de tekenverzameling ".!" blijft "hello" over en blijft de tekst binnen de randen onaangeroerd.
removeprefix()
De methode removeprefix() verwijdert één exact overeenkomend begin van een string en geeft de oorspronkelijke tekst terug als dat begin ontbreekt.
De aanroep "pretest".removeprefix("pre") geeft "test"; als het voorvoegsel ontbreekt, blijft de tekst ongewijzigd.
removesuffix()
De methode removesuffix() verwijdert één exact overeenkomend einde van een string en behoudt andere tekens die bij het verwijderen van randtekens zouden kunnen verdwijnen.
De aanroep "report.txt".removesuffix(".txt") behoudt "report", inclusief de laatste t in de basisnaam.
Retourwaarde
Een retourwaarde is het resultaat dat een functie of methode teruggeeft aan de aanroepende code. Het kan worden opgeslagen, getoetst of doorgegeven aan een andere bewerking.
De retourwaarde van text.upper() is tekst in hoofdletters; door die aan text toe te kennen, bewaar je haar voor later gebruik.
rfind()
De methode rfind() geeft de startindex van de laatste overeenkomende deelstring terug en gebruikt de posities van de volledige string, hoewel ze vanaf rechts zoekt.
De zoekactie "a-b-c".rfind("-") geeft drie terug en vindt zo het laatste koppelteken met een positie die vanaf links is geteld.
Ruwe stringliteral
Een ruwe stringliteral heeft een voorvoegsel r dat backslashes als letterlijke tekens behoudt in plaats van gewone escapesequenties te verwerken.
De ruwe stringliteral r"C:\new" behoudt de backslash vóór new, zodat die combinatie geen regeleinde wordt.

S

Samenvoegen
Samenvoegen bouwt één string op uit stringdelen en plaatst gekozen scheidingstekst tussen opeenvolgende delen zonder die aan een van de uiteinden toe te voegen.
Samenvoegen van ["home", "nora"] met de scheidingstekst "/" levert "home/nora" op, met één schuine streep tussen de delen.
Scheidingstekst
Scheidingstekst is de exacte string die een splitsingsgrens aangeeft of bij het samenvoegen tussen delen wordt geplaatst. Ze kan meerdere tekens bevatten.
De scheidingstekst ", " komt overeen met een komma gevolgd door een spatie en splitst de string "oak,elm" daarom niet.
Splitsing rond scheidingstekst
Een splitsing rond scheidingstekst verdeelt tekst eenmaal in een tuple met drie delen: de tekst vóór de scheidingstekst, de scheidingstekst en de tekst erna.
De splitsing van "color=blue" rond "=" is ("color", "=", "blue"), waarbij de scheidingstekst in het midden behouden blijft.
Stapgrootte van een uitsnede
De stapgrootte van een uitsnede is de gehele afstand ongelijk aan nul tussen geselecteerde posities; een negatieve waarde laat de selectie achteruit lopen.
Een stapgrootte van twee in "abcdef"[::2] selecteert de indexen nul, twee en vier, wat "ace" oplevert.
Startpositie van een zoekactie
Een startpositie van een zoekactie bepaalt de vroegste positie die wordt bekeken, terwijl teruggegeven indexen gerekend blijven vanaf het begin van de volledige string.
Een startpositie van één in "cocoa".find("co", 1) slaat de overeenkomst op nul over en vindt die op twee.
str.format()
De methode str.format() vult velden tussen accolades in een string met haar argumenten, waarbij velden op volgorde of met een expliciete argumentindex worden gekozen.
De aanroep "{1}, {0}".format("Ada", "Lovelace") gebruikt str.format() om het tweede argument vóór het eerste te plaatsen.
String
Een string is een geordende sequentie van Unicodetekens met het type str, die wordt gebruikt om tekst zoals namen, berichten en codes op te slaan.
De string "Hello, Nora" bevat de begroeting, de komma en de spatie als delen van één geordende tekstwaarde.
Stringliteral
Een stringliteral is tekst die rechtstreeks in Pythoncode tussen bij elkaar passende aanhalingstekens wordt geschreven. Die geven de grenzen aan zonder deel uit te maken van de waarde.
De stringliterals "open" en 'open' gebruiken verschillende buitenste aanhalingstekens, maar slaan dezelfde vier tekens op.
Stringmethode
Een stringmethode is een functie die aan stringwaarden is verbonden en met een punt en ronde haakjes wordt aangeroepen om een tekstbewerking uit te voeren en het resultaat terug te geven.
De aanroep van de stringmethode "hello".upper() geeft "HELLO" terug; zonder de ronde haakjes wordt de methode niet aangeroepen.

T

Tekencontrole
Een tekencontrole controleert of de tekens van een string aan een regel voldoen en geeft een booleaanse waarde terug; controles zoals isalpha() wijzen ook lege strings af.
De tekencontrole "lake9".isalnum() is waar, terwijl de spatie in "lake 9" ervoor zorgt dat die versie niet voldoet.
Teller
Een teller is een variabele die bijhoudt hoe vaak aan een voorwaarde wordt voldaan. Meestal begint hij bij nul en neemt hij per overeenkomst met één toe.
Een cijferteller voor "Bay 27" wordt verhoogd bij 2 en 7 en eindigt na de lus met twee overeenkomsten.

U

Uitlijning
Uitlijning bepaalt waar een waarde in een opgevuld veld staat: < plaatst haar links, > rechts en ^ in het midden.
Uitlijning rechts in f"{'hi':>5}" plaatst drie spaties vóór het woord; uitlijning links plaatst ze erachter.
Uitsnede
Een uitsnede selecteert tekens met een startwaarde, een exclusieve eindgrens en een optionele stapgrootte, en geeft de geselecteerde tekst terug als string.
De uitsnede "window"[1:4] geeft "ind" terug: posities één tot en met drie worden geselecteerd en positie vier niet.
Uitsnedegrens
Een uitsnedegrens geeft aan waar de selectie begint of eindigt; een voorwaartse uitsnede bevat de startpositie maar niet de eindpositie.
In "garden"[:3] is uitsnedegrens drie de exclusieve eindgrens, dus d wordt weggelaten en het resultaat is "gar".
Unicodecodepunt
Een Unicodecodepunt is een getal dat aan een teken is toegekend; Pythonstrings slaan codepunten op en len() telt ze.
De emoji "👍🏽" bevat twee Unicodecodepunten, dus de lengte van de Pythonstring is ondanks het uiterlijk twee.

V

Vastekommanotatie
Vastekommanotatie gebruikt het type f om een getal met een gekozen aantal decimalen weer te geven, waarbij zo nodig wordt afgerond en afsluitende nullen worden toegevoegd.
Vastekommanotatie .3f toont het gehele getal vijf als "5.000", met precies drie decimalen.
Veldbreedte
Een veldbreedte stelt een minimaal aantal tekenposities in voor een opgemaakte waarde en voegt opvulling toe, terwijl langere waarden volledig behouden blijven.
Een veldbreedte van vijf geeft "cat" twee afsluitende spaties, maar breedte twee behoudt nog steeds het volledige woord.
Veldconversie
Veldconversie zet een tekstdeel om in het type dat nodig is voor verdere verwerking, zoals een afgesplitste hoeveelheid met int() omzetten vóór een optelling.
Veldconversie zet de afgesplitste tekst "12" om in een geheel getal voordat die numeriek bij vijf kan worden opgeteld.

W

Witruimte
Witruimte bestaat uit tekens die ruimte innemen, zoals spaties, tabs en regelafbrekingen. Tekstmethoden kunnen die aan de randen verwijderen of als grenzen gebruiken.
De string " \t" bevat alleen witruimte; door randtekens te verwijderen verdwijnen beide tekens en blijft lege tekst over.
Witruimte opschonen
Witruimte opschonen met " ".join(text.split()) verwijdert witruimte aan de uiteinden en vervangt reeksen witruimte binnen de tekst door één gewone spatie.
Witruimte opschonen met " ".join(text.split()) verandert " blue\n sky " in "blue sky" met gelijkmatige spatiëring.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag