Ich OCRing etwas Text von zwei verschiedenen Quellen. Sie können an verschiedenen Orten Fehler machen, wo sie einen Buchstaben/eine Gruppe von Buchstaben nicht erkennen. Wenn sie etwas nicht erkennen, wird es durch ein? Ersetzt. Wenn das Wort z. B. Roflcopter
lautet, gibt eine Quelle möglicherweise Ro?copter
zurück, während eine andere lautet. Ich möchte eine Funktion, die zurückgibt, ob zwei Übereinstimmungen gleichwertig sein können und mehrere ?
s zulassen. Beispiel:elegante Weise, zwei wildcarded Zeichenketten zu entsprechen
match("Ro?copter", "Roflcop?er") --> True
match("Ro?copter", "Roflcopter") --> True
match("Roflcopter", "Roflcop?er") --> True
match("Ro?co?er", "Roflcop?er") --> True
Bisher kann ich mit einem perfekten einem einer OCR entsprechen, indem mithilfe von regulären Ausdrücken:
>>> def match(tn1, tn2):
tn1re = tn1.replace("?", ".{0,4}")
tn2re = tn2.replace("?", ".{0,4}")
return bool(re.match(tn1re, tn2) or re.match(tn2re, tn1))
>>> match("Roflcopter", "Roflcop?er")
True
>>> match("R??lcopter", "Roflcopter")
True
Aber das funktioniert nicht, wenn sie beide haben s an verschiedenen Orten:
>>> match("R??lcopter", "Roflcop?er")
False
Fügen Sie Python als Tag hinzu. Welche Version verwendest du, BTW? –
Version 2.5.2 mit zusätzlichen Leerzeichen – Claudiu