import re
def transform(line,file):
pattern = re.compile("-")
listfile = []
################
csvfile = '''twenty-two\t22
seventy-two thousand\t72000'''
rscf = csvfile.splitlines()
######
#with open(file,"r") as rscf :
dictRessource = dict()
for row in rscf:
listfile.append(row.split('\t'))
dictRessource = {str(rows[0]):str(rows[1]) for rows in listfile}
regex = "|".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()])
return re.sub(f'{regex}', lambda match: dictRessource[match.group(0).lower().replace(' ', '-')], line, flags=re.IGNORECASE)
print( transform("Some tWenty-two things and twEnty two ...", "file") )
aW1wb3J0IHJlCgpkZWYgdHJhbnNmb3JtKGxpbmUsZmlsZSk6CiAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgiLSIpCiAgICBsaXN0ZmlsZSA9IFtdCiAgICAjIyMjIyMjIyMjIyMjIyMjCiAgICBjc3ZmaWxlID0gJycndHdlbnR5LXR3b1x0MjIKc2V2ZW50eS10d28gdGhvdXNhbmRcdDcyMDAwJycnCiAgICByc2NmID0gY3N2ZmlsZS5zcGxpdGxpbmVzKCkKICAgICMjIyMjIwogICAgI3dpdGggb3BlbihmaWxlLCJyIikgYXMgcnNjZiA6CiAgICBkaWN0UmVzc291cmNlID0gZGljdCgpCiAgICBmb3Igcm93IGluIHJzY2Y6CiAgICAgICAgbGlzdGZpbGUuYXBwZW5kKHJvdy5zcGxpdCgnXHQnKSkKICAgIGRpY3RSZXNzb3VyY2UgPSB7c3RyKHJvd3NbMF0pOnN0cihyb3dzWzFdKSBmb3Igcm93cyBpbiBsaXN0ZmlsZX0KICAgIAogICAgcmVnZXggPSAifCIuam9pbihbciJcYnt9XGIoPyEoKFxzP1xiXGRcYlxzPyl8KFxzPyhodW5kcmVkfHRob3VzYW5kfG1pbGxlfG1pbGxpYXJkfG1pbGxpb258YmlsbGlvbnx0cmlsbGlvbikpPyhccz9cKD9cZD97fVwpPykpKSIuZm9ybWF0KHgucmVwbGFjZSgnLScsIHInW1xzLV0nKSwgeSkgZm9yIHgseSBpbiBkaWN0UmVzc291cmNlLml0ZW1zKCldKSAgCiAgICByZXR1cm4gcmUuc3ViKGYne3JlZ2V4fScsIGxhbWJkYSBtYXRjaDogZGljdFJlc3NvdXJjZVttYXRjaC5ncm91cCgwKS5sb3dlcigpLnJlcGxhY2UoJyAnLCAnLScpXSwgbGluZSwgZmxhZ3M9cmUuSUdOT1JFQ0FTRSkgCiAgICAKcHJpbnQoIHRyYW5zZm9ybSgiU29tZSB0V2VudHktdHdvIHRoaW5ncyBhbmQgdHdFbnR5IHR3byAuLi4iLCAiZmlsZSIpICk=