Benutzer-Werkzeuge

Webseiten-Werkzeuge


python_2

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
python_2 [2018/04/25 17:01]
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.
 </WRAP>| </WRAP>|
 +|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. \\ \\ 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).|
 +|items()|Liefert eine Liste mit Tuppels zurück in der jeweils ein Tupple ein Key-Value-Pair darstellt. \\ \\<WRAP>
 +Ist das dict so:
 +<code>
 +"Peter":100
 +"Jan":50
 +"Dieter":30
 +</code>
 +Ergibt items():
 +<code>
 +[(Peter,100),(Jan,50),(Dieter,30)]
 +</code>
 +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:
 +<code>
 +for schluessel,werte in a.items():
 +     Das was getan werden soll
 +</code>
 +
 +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. 
 +</WRAP>|
 +
 +
 +
 +====== 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:
 +<code>
 +a=tuple(('eins','zwei','drei')
 +</code>
 +Oben stehender Code erstellt ein Tupple mit den Werten "eins","zwei","drei".
 +
 +
 +====== Regular Expressions ======
 +
 +  * Bibliothek ist re
 +
 +**Hinweis:** By Default arbeitet das Matching "Greedy", das heißt es wird einen String so lang wie durch das Regular-Expression erlaubt matchen: "Subject: Petersen meint: Muss schneller gehen" - Regex: "*+:" - Das Ergebniss in diesem Fall ist nicht "Subject:" wie man meinen könnte, sondern "Subject:  Petersen meint:", da nach irgendwelchen Zeichen (*) und einem Doppelpunkt gesucht wird -> der Doppelpunkt am meisten Rechts ist der nach "meint". \\ Man kann das Abschalten in dem man "?" an das Ende Regular-Expression-Kombination schreibt: "*+?:", das würde dann zwei Elemente (statt einem) ausgeben: "Subject:", "Petersen meint:" ausgeben.
 +
 +Special-Charakters, nicht komplette Liste
 +^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: .* \\Beliebiges Zeichen, beliebig oft |
 +|+|Das vorhergehende Zeichen mindestens einmal, maximal beliebig oft.|
 +|?|Abschalten der Greedy-Funktion für das davor stehende Zeichen/Zeichenkombination, d.h. Abschalten des Verhaltens den regulären Ausdruck auf ein möglichst großes Gebiet anzuwenden. \\ Beschränkt den regulären Ausdruck auf den kleinsten Teil einer Teilzeichenkette der dem regulären Ausdruck passt, anstatt einen möglichst großen Teil einer Zeichenkette zu finden auf den der reguläre Ausdruck noch anwendbar ist (siehe Abschnitt oben)|
 +|\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, das heißt irgend ein Zeichen der Gruppe kann ggf. mehrfach hintereinander auftreten, es muss sich dabei aber nicht um das gleiche Zeichen handeln, es müssen nur Zeichen der Gruppe sein -> also ist die Gruppe a,b,c, dann könnte es aabca sein. \\ \\ <WRAP>
 +Gruppendefinition:
 +  * [A-Z] - der "-" Operator definiert einen Bereich (inklusive dem ersten und letzten angegeben Zeichen) von Zeichen
 +  * [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:** Die Angaben sind Case-Sensitiv, Groß- und Kleinschreibung haben also Bedeutung  
 +</WRAP>|
 +|[^ ]|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. <WRAP>
 +<code>
 +import re
 +a="Hallo Welt"
 +re.search("l{2}",a)
 +</code>
 +Oben stehendes Beispiel würde ein Objekt zurück geben, würde es nicht matchen würde es None zurück geben.
 +</WRAP> |\\ \\
 +|re.findall|Liefert eine Liste mit Strings zurück auf die der regluläre Ausdruck zutraf. \\ <WRAP>
 +<code>
 +a="Hallo Wellt"
 +re.findall("l{2}")
 +</code>
 +Das Ergebnis ist eine Liste mit 2 Elementen mit jeweils "ll" in diesen.
 +
 +**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. \\
 +<code>
 +import re
 +a="From: Peter.Deichsel@something.de"
 +re.findall("^\W*From:\W*(\S+)",a)
 +</code>
 +In obigem Beispiel ist die E-Mailadresse im From von Interesse. \\
 +  * ^\W*From:\W* -> stellt sicher das der From-Header gefunden wird, es können davor und dahinter Leerzeichen sein (\W*)
 +  * \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 "Peter.Deichsel@something.de" als Ergebnis zurückgeliefert.
 +</WRAP> |
python_2.1524668494.txt.gz · Zuletzt geändert: 2018/04/25 17:01 von root