Finale Implementierung und Tests
Jetzt vervollständigen wir unsere Implementierung, um alle erforderlichen Fälle zu behandeln, und überprüfen, ob sie alle Testfälle besteht.
Aktualisieren Sie Ihre snake_case.py
-Datei mit der finalen Implementierung:
import re
def snake(s):
## Replace hyphens with spaces
s = s.replace('-', ' ')
## Handle PascalCase pattern
s = re.sub('([A-Z][a-z]+)', r' \1', s)
## Handle sequences of uppercase letters
s = re.sub('([A-Z]+)', r' \1', s)
## Split by whitespace and join with underscores
return '_'.join(s.split()).lower()
## Test with a complex example
if __name__ == "__main__":
test_string = "some-mixed_string With spaces_underscores-and-hyphens"
result = snake(test_string)
print(f"Original: {test_string}")
print(f"Snake case: {result}")
Diese finale Implementierung:
- Ersetzt Bindestriche durch Leerzeichen
- Fügt mithilfe von
re.sub('([A-Z][a-z]+)', r' \1', s)
einen Leerzeichen vor Mustern wie "Word" ein
- Fügt mithilfe von
re.sub('([A-Z]+)', r' \1', s)
einen Leerzeichen vor Folgen von Großbuchstaben ein
- Teilt die Zeichenkette anhand von Leerzeichen auf, verbindet sie mit Unterstrichen und wandelt sie in Kleinbuchstaben um
Jetzt führen wir unsere Funktion gegen die Testsuite aus, die im Einrichtungsschritt erstellt wurde:
cd /tmp && python3 test_snake.py
Wenn Ihre Implementierung korrekt ist, sollten Sie sehen:
All tests passed! Your snake case function works correctly.
Herzlichen Glückwunsch! Sie haben erfolgreich eine robuste Funktion zur Umwandlung in Snake Case implementiert, die verschiedene Eingabeformate verarbeiten kann.
Stellen wir sicher, dass unsere Funktion die Spezifikation genau einhält, indem wir sie mit den Beispielen aus dem ursprünglichen Problem testen:
## Add this to the end of your snake_case.py file:
if __name__ == "__main__":
examples = [
'camelCase',
'some text',
'some-mixed_string With spaces_underscores-and-hyphens',
'AllThe-small Things'
]
for ex in examples:
result = snake(ex)
print(f"Original: {ex}")
print(f"Snake case: {result}")
print("-" * 20)
Führen Sie Ihr aktualisiertes Skript aus:
python3 ~/project/snake_case.py
Sie sollten sehen, dass alle Beispiele korrekt in Snake Case umgewandelt werden:
Original: some-mixed_string With spaces_underscores-and-hyphens
Snake case: some_mixed_string_with_spaces_underscores_and_hyphens
Original: camelCase
Snake case: camel_case
--------------------
Original: some text
Snake case: some_text
--------------------
Original: some-mixed_string With spaces_underscores-and-hyphens
Snake case: some_mixed_string_with_spaces_underscores_and_hyphens
--------------------
Original: AllThe-small Things
Snake case: all_the_small_things
--------------------