Ich habe das noch nie probiert - in meiner Freizeit rühre ich Windows aber auch selten an. Aber tatsächlich habe ich damit schon mal geliebäugelt, einen solchen selber zu timenBlackJack hat geschrieben:@Hyperion: Ich dachte KDE bekommt man auch unter Windows zum laufen? Ausserdem liesse sich so ein Timer doch leicht in Python selber programmieren.
String Vergleich mit re.search()
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
BlackJack hat geschrieben:@KuniBert: Erstmal brauchst Du dafür keinen regulären Ausdruck, eine Zeichenkette in einer anderen suchen geht einfacher mit dem ``in``-Operator:Wenn Du genau wissen willst was Deine Werte enthalten, dann lass Dir mal den Typ ausgeben, den bekommt man mit der `type()`-Funktion, und dann die `repr()`-Darstellung statt der Zeichenkette. Bestimmte Zeichen siehst Du sonst nämlich nicht oder man übersieht sie zu leicht. Zum Beispiel Leerzeichen am Ende einer Zeichenkette oder so Sachen wie Nullbytes und andere Bytewerte die in der Ausgabe oft überhaupt nicht sichtbar sind.Code: Alles auswählen
In [1]: 'pa' in 'spam' Out[1]: True In [2]: 'rot' in 'spam' Out[2]: False
Ich habe die `repr()`-Darstellung mir ausgeben lassen ´. Die Ergebnisse sehen wie folgt aus:
aus ocr: ' B-KS 8583\n\n '
aus txt: ' B-KS 8583\n '
also unterschiedlich? Was bedeuten hier die \n und wie bekomme ich die Beiden gleich?
Ich habe auch nichts weiter über den ``in``-Operator gefunden. Wie würde da ein Code aussehen? so?
Code: Alles auswählen
if a in b:
print "yes"
else:
print "no"
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Das ist die Repräsentation des Zeilenumbruchs (bei Unixoiden Systemen). Probiere es doch aus! BlackJack hat Dir das doch schon gezeigt. Öffne eine Python-Shell Deiner Wahl und tippe das dort mal einKuniBert hat geschrieben: Ich habe die `repr()`-Darstellung mir ausgeben lassen ´. Die Ergebnisse sehen wie folgt aus:
aus ocr: ' B-KS 8583\n\n '
aus txt: ' B-KS 8583\n '
also unterschiedlich? Was bedeuten hier die \n und wie bekomme ich die Beiden gleich?
Ich würde diese Whitspaces jedoch vor irgend welchen Vergleichen entfernen. Dafür gibt es die ``strip``-Methode auf Strings.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
So hat es funktioniert. Ist das ok?
Code: Alles auswählen
a = ocr.replace('\n',"")
b = kenndb.replace('\n',"")
if a in b:
print "yes"
else:
print "no"
OUT: yes
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Nein! (Weil das total ineffizient ist!) Ich hatte Dir doch schon ``strip`` genannt. Außerdem werden damit auch andere und vor allem führende Whitespaces entfernt.KuniBert hat geschrieben:So hat es funktioniert. Ist das ok?
Und Du hast es vermutlich wieder nicht in einer Shell probiert - denn das ist ja trivial und erfordert keinen komplizierten ``if...else``-Ausdruck:
Code: Alles auswählen
scanned = ' B-KS 8583\n\n '.strip()
given = ' B-KS 8583\n '.strip()
scanned in given
> True
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Kein Problem
Ich hoffe Du denkst auch noch daran! (Und versuchst das zu verstehen, was cofi da als Tipp gibt!)
Ich hoffe Du denkst auch noch daran! (Und versuchst das zu verstehen, was cofi da als Tipp gibt!)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert