Seite 1 von 2
Re: String Vergleich mit re.search()
Verfasst: Donnerstag 5. März 2015, 13:24
von Hyperion
BlackJack 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.
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 timen

Re: String Vergleich mit re.search()
Verfasst: Donnerstag 5. März 2015, 14:37
von KuniBert
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:
Code: Alles auswählen
In [1]: 'pa' in 'spam'
Out[1]: True
In [2]: 'rot' in 'spam'
Out[2]: False
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.
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?
Re: String Vergleich mit re.search()
Verfasst: Donnerstag 5. März 2015, 14:45
von Hyperion
KuniBert 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?
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 ein
Ich würde diese Whitspaces jedoch vor irgend welchen Vergleichen entfernen. Dafür gibt es die ``strip``-Methode auf Strings.
Re: String Vergleich mit re.search()
Verfasst: Donnerstag 5. März 2015, 14:59
von KuniBert
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
Re: String Vergleich mit re.search()
Verfasst: Donnerstag 5. März 2015, 15:33
von Hyperion
KuniBert hat geschrieben:So hat es funktioniert. Ist das ok?
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.
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
Im ürbigen würde man das ``strip`` bereits beim Lesen aus der Textdatei ausführen und nicht *jedes* Mal unmittelbar vor dem Vergleich.
Re: String Vergleich mit re.search()
Verfasst: Donnerstag 5. März 2015, 16:00
von KuniBert
Ah ok ich glaub jetzt hab ich es verstanden. Danke für deine Geduld. Wie gesagt absolut keine Programmierkenntnisse

Re: String Vergleich mit re.search()
Verfasst: Donnerstag 5. März 2015, 16:29
von Hyperion
Kein Problem
Ich hoffe Du denkst auch noch
daran! (Und versuchst das zu verstehen, was cofi da als Tipp gibt!)