Я распечатываю текст из двух разных источников. Каждый из них может делать ошибки в разных местах, где они не узнают букву / группу букв. Если они чего-то не узнают, это заменяется знаком?. Например, если слово Roflcopter
, один источник может вернуть Ro? Copter
, а другой - Roflcopter
. Мне нужна функция, которая возвращает, могут ли два совпадения быть эквивалентными, с учетом нескольких ?
s. Пример:
match("Ro?copter", "Roflcop?er") --> True
match("Ro?copter", "Roflcopter") --> True
match("Roflcopter", "Roflcop?er") --> True
match("Ro?co?er", "Roflcop?er") --> True
Пока что я могу сопоставить одно OCR с идеальным, используя регулярные выражения:
>>> 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
Но это не работает, когда у них обоих есть? В разных местах:
>>> match("R??lcopter", "Roflcop?er")
False