import re def normalize_query(query): """ Only normalize type-like patterns (e.g., С-25, C-25, Т-40 → C25, T40) without touching the rest of the Russian text. """ def repl(m): cyr_to_lat = {'С': 'C', 'с': 'C', 'Т': 'T', 'т': 'T', 'У': 'U', 'у': 'U'} letter = cyr_to_lat.get(m.group(1), m.group(1)) return f"{letter}{m.group(2)}" return re.sub(r'\b([СсТтУуCTU])[-\s]?(\d+)\b', repl, query) tests = [ "8. какие размеры будут у сварного шва для типа С-25 ?", "8. какие размеры будут у сварного шва для типа C-25 ?", "8. какие размеры будут у сварного шва для типа С25 ?", "8. какие размеры будут у сварного шва для типа Т-40 ?", "8. какие размеры будут у сварного шва для типа У-16 ?" ] for t in tests: print(normalize_query(t))