Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
python_2 [2018/04/25 17:18] root [Dictionary] |
python_2 [2018/04/26 16:43] (aktuell) root [Regular Expressions] |
||
---|---|---|---|
Zeile 323: | Zeile 323: | ||
Man spart sich die explizite Prüfung. | Man spart sich die explizite Prüfung. | ||
</ | </ | ||
- | |values()|Gibt eine liste (typ list) mit den Werten zurück.| | + | |values()|Gibt eine liste (typ list) mit den Werten zurück. \\ \\ Führt man values() und keys() kurz hintereinander (aufeinander folgend) aus, so entsprechen sich die Werte -> das heißt der Key in der einen Liste hat die gleiche Position wie sein Wert in der anderen Liste. Das geht aber nur kurz nacheinander (vermutlich kann sich es ändern sobald man Änderungen am dict vornimmt).| |
- | |keys()|Gibt eine Liste (typ list) mit den Keys zurück.| | + | |keys()|Gibt eine Liste (typ list) mit den Keys zurück. |
+ | |items()|Liefert eine Liste mit Tuppels zurück in der jeweils ein Tupple ein Key-Value-Pair darstellt. \\ \\< | ||
+ | Ist das dict so: | ||
+ | < | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | Ergibt items(): | ||
+ | < | ||
+ | [(Peter, | ||
+ | </ | ||
+ | Wir haben also eine Liste mit 3 Elementen, jedes Element ist ein Tuppel. \\ \\ | ||
+ | Das kann man verwenden wenn man zum Beispiel in einer Loop durch die Keys und die dazugehörigen Values laufen will: | ||
+ | < | ||
+ | for schluessel, | ||
+ | Das was getan werden soll | ||
+ | </ | ||
+ | |||
+ | In diesem Fall liefert items() eine Liste zurück durch die die Schleife läuft, da 2 Iterationsvariablen vorhanden sind (schluessel und werte) spaltet Python die einzelnen Einträge in der Liste weiter auf, nämlich in die beiden Bestandteile des Tuppels und verteilt diese auf die Variablen. | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ====== Tuple ====== | ||
+ | |||
+ | * Nicht Modifizierbare Liste (inmutable) | ||
+ | * Verbraucht weniger Resourcen als eine Liste | ||
+ | * Im Gegensatz zu list welches [] nutzt um eine Liste zu definieren, nutzt Tuple () | ||
+ | |||
+ | Defininition eines Tuppels: | ||
+ | < | ||
+ | a=tuple((' | ||
+ | </ | ||
+ | Oben stehender Code erstellt ein Tupple mit den Werten " | ||
+ | |||
+ | |||
+ | ====== Regular Expressions ====== | ||
+ | |||
+ | * Bibliothek ist re | ||
+ | |||
+ | **Hinweis: | ||
+ | |||
+ | Special-Charakters, | ||
+ | ^Character ^Erklärung ^ | ||
+ | |.|Steht für beliebige Zeichen| | ||
+ | |*|Bedeutet das vorhergehende Zeichen 0 mal oder beliebig oft - das vorhergehende Zeichen kann also gar nicht oder beliebig oft nacheinander auftauchen. \\ \\ Häufig genutzt in der Kombination: | ||
+ | |+|Das vorhergehende Zeichen mindestens einmal, maximal beliebig oft.| | ||
+ | |? | ||
+ | |\S|Ein Zeichen was kein Leerzeichen ist - oder anders alles was kein Leerzeichen ist| | ||
+ | |[ ]|Steht für eine frei definierbare Gruppe von Zeichen. \\ \\ Grundsätzlich (ohne extra Zeichen dahinter) steht es für genau ein Zeichen aus dieser Gruppe. In Zusammenhang mit +, * usw. erhält es die Bedeutung als wäre es ein normales Zeichen gefolgt von dem Spezialzeichen, | ||
+ | Gruppendefinition: | ||
+ | * [A-Z] - der " | ||
+ | * [ACG] - definiert eine Liste von Zeichen | ||
+ | |||
+ | Die beiden Vorgehensweisen können gemischt werden: | ||
+ | * [A-Da-dF] - matched Zeichen A-D und a-d und F | ||
+ | |||
+ | **Hinweis: | ||
+ | </ | ||
+ | |[^ ]|Matcht alles außer die Zeichen die in der eckigen Klammer definiert sind - ist eine Umkehr| | ||
+ | |||
+ | ^Funktion ^Beschreibung ^ | ||
+ | |re.search|Tut das gleiche wie find in strings, prüft ob der regular Expression in dem Objekt vorkommt - gibt True oder False zurück. < | ||
+ | < | ||
+ | import re | ||
+ | a=" | ||
+ | re.search(" | ||
+ | </ | ||
+ | Oben stehendes Beispiel würde ein Objekt zurück geben, würde es nicht matchen würde es None zurück geben. | ||
+ | </ | ||
+ | |re.findall|Liefert eine Liste mit Strings zurück auf die der regluläre Ausdruck zutraf. \\ < | ||
+ | < | ||
+ | a=" | ||
+ | re.findall(" | ||
+ | </ | ||
+ | Das Ergebnis ist eine Liste mit 2 Elementen mit jeweils " | ||
+ | |||
+ | **Beschränken des Rückgabe-Bereichs** | ||
+ | \\ | ||
+ | Es kann sein, dass man zwar auf einen bestimmten Bereich matchen will, aber nur einen Teilstring extrahieren (der nicht identisch ist mit dem Gesamtstring auf den man matcht). | ||
+ | \\ | ||
+ | Dazu kann man einen Teilausdruck in Klammern definieren, es wird dann zwar auf den gesamten regulären Ausdruck gematcht, aber nur das das Ergebnis des Ausdrucks in Klammern wird in den Ergebnissen berücksichtigt. \\ | ||
+ | < | ||
+ | import re | ||
+ | a=" | ||
+ | re.findall(" | ||
+ | </ | ||
+ | In obigem Beispiel ist die E-Mailadresse im From von Interesse. \\ | ||
+ | * ^\W*From: | ||
+ | * \S+ -> stellt sicher das nach dem Header mindestens ein Zeichen kommt was kein Leerzeichen ist | ||
+ | * () -> bedeutet das nur das Ergebnis des reguläre Ausdruck innerhalb der Klammern zurückgeliefert wird | ||
+ | |||
+ | In obigem Beispiel würde " | ||
+ | </ |