Estoy OCRing algo de texto de dos fuentes diferentes. Pueden cometer errores en diferentes lugares, donde no reconocerán una letra/grupo de letras. Si no reconocen algo, se reemplaza con un? Por ejemplo, si la palabra es Roflcopter
, una fuente puede devolver Ro?copter
, mientras que otra, Roflcop?er
. Me gustaría una función que devuelva si dos coincidencias pueden ser equivalentes, permitiendo múltiples ?
s. Ejemplo:manera elegante de hacer coincidir dos cadenas comodín
match("Ro?copter", "Roflcop?er") --> True
match("Ro?copter", "Roflcopter") --> True
match("Roflcopter", "Roflcop?er") --> True
match("Ro?co?er", "Roflcop?er") --> True
Hasta ahora no puede coincidir con uno de OCR con un perfecto mediante el uso de expresiones regulares:
>>> 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
Pero esto no funciona cuando los dos tienen s en diferentes lugares:?
>>> match("R??lcopter", "Roflcop?er")
False
Agregue Python como una etiqueta. ¿Qué versión estás usando, por cierto? –
versión 2.5.2 con espacio en blanco adicional – Claudiu