import re
file_text = 'twenty-two\t22\nseventy-two thousand\t72000'
listfile = [x.split('\t') for x in file_text.splitlines()]
dictRessource = {str(rows[0]):str(rows[1]) for rows in listfile}
regex = re.compile( "|".join([r"\b{}\b(?!((\s?\b\d\b\s?)|(\s?(hundred|thousand|mille|milliard|million|billion|trillion))?(\s?\(?\d?{}\)?)))".format(x.replace('-', r'[\s-]'), y) for x,y in dictRessource.items()]) , re.I)
def transform(line):
return regex.sub(lambda match: dictRessource[match.group(0).lower().replace(' ', '-')], line)
print( transform("Some tWenty-two things and twEnty two ...") )
aW1wb3J0IHJlCgpmaWxlX3RleHQgPSAndHdlbnR5LXR3b1x0MjJcbnNldmVudHktdHdvIHRob3VzYW5kXHQ3MjAwMCcKbGlzdGZpbGUgPSBbeC5zcGxpdCgnXHQnKSBmb3IgeCBpbiBmaWxlX3RleHQuc3BsaXRsaW5lcygpXQpkaWN0UmVzc291cmNlID0ge3N0cihyb3dzWzBdKTpzdHIocm93c1sxXSkgZm9yIHJvd3MgaW4gbGlzdGZpbGV9CnJlZ2V4ID0gcmUuY29tcGlsZSggInwiLmpvaW4oW3IiXGJ7fVxiKD8hKChccz9cYlxkXGJccz8pfChccz8oaHVuZHJlZHx0aG91c2FuZHxtaWxsZXxtaWxsaWFyZHxtaWxsaW9ufGJpbGxpb258dHJpbGxpb24pKT8oXHM/XCg/XGQ/e31cKT8pKSkiLmZvcm1hdCh4LnJlcGxhY2UoJy0nLCByJ1tccy1dJyksIHkpIGZvciB4LHkgaW4gZGljdFJlc3NvdXJjZS5pdGVtcygpXSkgLCByZS5JKQogICAgCmRlZiB0cmFuc2Zvcm0obGluZSk6CiAgICByZXR1cm4gcmVnZXguc3ViKGxhbWJkYSBtYXRjaDogZGljdFJlc3NvdXJjZVttYXRjaC5ncm91cCgwKS5sb3dlcigpLnJlcGxhY2UoJyAnLCAnLScpXSwgbGluZSkgCiAgICAKcHJpbnQoIHRyYW5zZm9ybSgiU29tZSB0V2VudHktdHdvIHRoaW5ncyBhbmQgdHdFbnR5IHR3byAuLi4iKSAp