Cursus
Als je onze gratis Intro to R-cursus wilt volgen, hier is de link.
Numerieke waarden uit strings extraheren
Getallen uit strings halen is een veelvoorkomende taak, vooral wanneer je werkt met ongestructureerde data of logbestanden.
Stel, je hebt de volgende string: 'the recipe calls for 6 strawberries and 2 bananas'.
Het is handig om de 6 en de 2 uit deze string te halen en op te slaan voor later gebruik, bijvoorbeeld om de verhouding aardbeien tot bananen te vergelijken.
Als je een reguliere expressie gebruikt om meerdere getallen te extraheren (of nauwkeuriger: meerdere patroonmatches), kun je de functie re.findall() gebruiken. Dan besprak dit niet in de video, maar het is eenvoudig te gebruiken: je geeft een patroon en een string door aan re.findall(), en het retourneert een lijst met de matches.
Instructies
- Importeer
re. - Schrijf een patroon dat alle getallen in de volgende string vindt:
'the recipe calls for 10 strawberries and 1 banana'. Doe dit als volgt:- Gebruik de functie
re.findall()en geef twee argumenten mee: het patroon, gevolgd door de string. \dis het patroon dat cijfers vindt. Zet hierachter een+zodat het vorige element één of meer keer wordt gematcht. Dit zorgt ervoor dat10als één getal wordt gezien en niet als1en0.
- Gebruik de functie
- Print de matches om te bevestigen dat je reguliere expressie de waarden
10en1heeft gevonden.
# Import the regular expression module
____
# Find the numeric values: matches
matches = re.findall('____', '____')
# Print the matches
print(____)
# Import the regular expression module
import re
# Find the numeric values: matches
matches = re.findall('\d+', 'the recipe calls for 10 strawberries and 1 banana')
# Print the matches
print(matches)
Ex().test_import('re')
Ex().test_correct(test_object('matches'), test_function('re.findall'))
Ex().test_function('print')
success_msg('Excellent work - your regular expression successfully extracted the numeric values 10 and 1 from the string!')
- Gebruik het commando
import xom de modulexte importeren. - Het eerste argument voor
re.findall()moet\d+zijn, en het tweede argument moet de string zijn:'the recipe calls for 10 strawberries and 1 banana'. - Gebruik de meegeleverde functie
print()ommatcheste printen.
Als dat duidelijk is, ga dan door naar de volgende oefening! Zo niet, bekijk dan deze overzichtsvideo.
Overzichtsvideo over het gebruik van reguliere expressies om strings op te schonen in Python
Patroonherkenning
In deze oefening blijf je je vaardigheden met reguliere expressies oefenen. Voor elke gegeven string is het jouw taak om het juiste patroon te schrijven om deze te matchen.
Instructies
- Schrijf patronen om te matchen:
- Een telefoonnummer in het formaat
xxx-xxx-xxxx. Dit heb je al gedaan in een eerdere oefening. - Een string met het formaat: een dollarteken, een willekeurig aantal cijfers, een decimaalteken, 2 cijfers.
- Gebruik
\$om het dollarteken te matchen,\d*om een willekeurig aantal cijfers te matchen,\.om het decimaalteken te matchen, en\d{x}omxaantal cijfers te matchen.
- Gebruik
- Een telefoonnummer in het formaat
- Een hoofdletter, gevolgd door een willekeurig aantal alfanumerieke tekens.
- Gebruik
[A-Z]om elke hoofdletter te matchen gevolgd door\w*om een willekeurig aantal alfanumerieke tekens te matchen.
- Gebruik
import re
# Write the first pattern
pattern1 = bool(re.match(pattern='____', string='123-456-7890'))
print(pattern1)
# Write the second pattern
pattern2 = bool(re.match(pattern='____', string='$123.45'))
print(pattern2)
# Write the third pattern
pattern3 = bool(re.match(pattern='____', string='Australia'))
print(pattern3)
# Write the first pattern
pattern1 = bool(re.match(pattern='\d{3}-\d{3}-\d{4}', string='123-456-7890'))
print(pattern1)
# Write the second pattern
pattern2 = bool(re.match(pattern='\$\d*\.\d{2}', string='$123.45'))
print(pattern2)
# Write the third pattern
pattern3 = bool(re.match(pattern='[A-Z]\w*', string='Australia'))
print(pattern3)
Ex().test_correct(test_object('pattern1'), test_function('re.match', index=1))
Ex().test_function('print', index=1)
Ex().test_correct(test_object('pattern2'), test_function('re.match', index=2))
Ex().test_function('print', index=2)
Ex().test_correct(test_object('pattern3'), test_function('re.match', index=3))
Ex().test_function('print', index=3)
success_msg("Great work! You're mastering the fundamentals of writing regular expressions!")
- Er zijn drie componenten in het eerste patroon dat je reguliere expressie moet matchen:
xxx,xxxenxxxx. De eerste twee worden gematcht door\d{3}, terwijl de laatste wordt gematcht door\d{4}. Elk van deze componenten moet worden gescheiden door een-.
Als je meer uit deze cursus wilt halen, hier is de link.
Bekijk DataCamp's Python String Tutorial.
