Kurs
Wenn du unseren kostenlosen Einführungskurs zu R machen möchtest, findest du hier den Link.
Numerische Werte aus Zeichenketten extrahieren
Das Extrahieren von Zahlen aus Strings ist eine gängige Aufgabe, besonders bei unstrukturierten Daten oder Logdateien.
Angenommen, du hast folgenden String: 'the recipe calls for 6 strawberries and 2 bananas'.
Es wäre praktisch, die 6 und die 2 aus diesem String zu ziehen, um sie später für den Vergleich des Erdbeer-zu-Bananen-Verhältnisses zu nutzen.
Wenn du einen regulären Ausdruck verwendest, um mehrere Zahlen zu extrahieren (genauer: mehrere Musterübereinstimmungen), kannst du die Funktion re.findall() nutzen. Dan ist im Video nicht darauf eingegangen, aber die Anwendung ist einfach: Du übergibst ein Muster und einen String an re.findall(), und es liefert eine Liste mit allen Treffern zurück.
Anleitung
- Importiere
re. - Schreibe ein Muster, das alle Zahlen in folgendem String findet:
'the recipe calls for 10 strawberries and 1 banana'. Gehe dazu so vor:- Verwende die Funktion
re.findall()und übergib zwei Argumente: zuerst das Muster, dann den String. \dist das Muster für Ziffern. Hänge ein+an, damit das vorherige Element ein- oder mehrmals gematcht wird. So wird10als eine Zahl erkannt und nicht als1und0.
- Verwende die Funktion
- Gib die Treffer aus, um zu bestätigen, dass dein regulärer Ausdruck die Werte
10und1gefunden hat.
# 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!')
- Verwende den Befehl
import x, um das Modulxzu importieren. - Das erste Argument von
re.findall()sollte\d+sein, das zweite der String:'the recipe calls for 10 strawberries and 1 banana'. - Nutze die bereitgestellte
print()-Funktion, ummatchesauszugeben.
Wenn das klar ist, mach mit der nächsten Übung weiter! Falls nicht, hier ist ein Überblicksvideo.
Überblicksvideo: Reguläre Ausdrücke zum Bereinigen von Strings in Python
Pattern Matching
In dieser Übung vertiefst du deine Fähigkeiten mit regulären Ausdrücken. Für jeden gegebenen String schreibst du das passende Muster, das ihn matched.
Anleitung
- Schreibe Muster für:
- Eine Telefonnummer im Format
xxx-xxx-xxxx. Das hast du bereits in einer früheren Übung gemacht. - Einen String im Format: Ein Dollarzeichen, eine beliebige Anzahl von Ziffern, ein Dezimalpunkt, 2 Ziffern.
- Verwende
\$für das Dollarzeichen,\d*für eine beliebige Anzahl Ziffern,\.für den Dezimalpunkt und\d{x}für genauxZiffern.
- Verwende
- Eine Telefonnummer im Format
- Ein Großbuchstabe, gefolgt von einer beliebigen Anzahl alphanumerischer Zeichen.
- Nutze
[A-Z], um einen Großbuchstaben zu matchen, gefolgt von\w*für eine beliebige Anzahl alphanumerischer Zeichen.
- Nutze
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!")
- Die erste Vorlage besteht aus drei Teilen:
xxx,xxxundxxxx. Die ersten beiden werden mit\d{3}gematcht, der letzte mit\d{4}. Jeder Teil wird durch ein-getrennt.
Wenn du mehr aus diesem Kurs mitnehmen willst, hier ist der Link.
Schau dir auch DataCamps Python String Tutorial an.
