Skip to main content

Twee spaties

Als we een tekst hebben en we willen controleren of we ergens een spatie te veel hebben ingetypt dan zoeken we naar twee of meer spaties

Dat gaat met het volgende programma.

import re

def heeft_dubbele_of_meer_spaties(tekst):
    # Definieer een reguliere expressie om te zoeken naar twee of meer spaties
    patroon = r"\s{2,}"
    return not re.search(patroon, tekst)


def main():
    invoer = input("Voer een tekst in: ")
    if heeft_dubbele_of_meer_spaties(invoer):
        print("De tekst bevat geen twee of meer spaties na elkaar.")
    else:
        print("De tekst bevat twee of meer spaties na elkaar.")


if __name__ == "__main__":
    main()

Je ziet dat \s in een reguliere expressie staat voor een spatie. We hadden ook gezien dat \d staat voor een nummer.

{2,} betekent 2 of meer.

Je zou de reguliere expressie ook a anders kunnen schrijven, bijvoorbeeld:

\s\s+

Dit is een spatie gevolgd door 1 of meer spaties. Dus

\s{2,} is hetzelfde als \s\s+

In plaats van controleren of een tekst twee spaties of meer achter elkaar bevat, kan je de tekst ook aanpassen, zodat alle meer dan 1 spaties worden vervangen door één spatie.

Dus soms gebruik je een \ als teken dat het volgende karakter iets speciaals betekent. We kennen de volgende speciale karakters.

Teken Betekenis Alternatief
\s
een spatie of eigenlijk een 'white space' (= spatie of tab)

\d
een plus betekent 1 of meer keren [0-9]+
\w
een woord (a-z, A-Z en underscore)
[A-Za-z_]+
\\
een backslash

\.
een punt

 

Zoek en vervang

Met het python commando

re.sub(r'expressie', 'string', tekst)

Met dit commando wordt alles in de variabel tekst dat voldoet aan de reguliere expressie 'expressie' vervangen door string.

Opdracht

Maak een python programma dat in een tekst alle plaatsen waar mer dan 1 spatie achter elkaar staan vervangt in precies één spatie.

Gebruik daarvoor het commando re.sub voor zoek en vervang.

Test je programma uit en maar daarvoor 3 teksten;

  1. één correcte tekst (geen dubbele spaties)
  2. één teksts met op drie plaatsten een dubbele spatie en
  3. één tekst met op één plaats 6 spaties achter elkaar.

Inleveren

  1. Jouw Python programma met jouw drie testen.
  2. Jouw output in een screenshot.