import re
my_str = "This is a 1/2 1/4. Press 1/2/3. He drove a car for 1/2hour." # A free text
def replace_fractions(text):
fraction_dict = {
'1/2': 'half',
'1/4': 'quarter',
'3/4': 'three quarters',
'2/3': 'two thirds',
}
return re.sub(r'(?<!\d)(?<!\d/)[0-9]/[0-9]{1,2}(?!/?\d)', lambda x: fraction_dict.get(x.group(), x.group()), text)
current_result = replace_fractions("This is a 1/2 1/4. Press 1/2/3. He drove a car for 1/2hour.")
print(current_result)
aW1wb3J0IHJlCm15X3N0ciA9ICJUaGlzIGlzIGEgMS8yIDEvNC4gUHJlc3MgMS8yLzMuIEhlIGRyb3ZlIGEgY2FyIGZvciAxLzJob3VyLiIgIyBBIGZyZWUgdGV4dAoKZGVmIHJlcGxhY2VfZnJhY3Rpb25zKHRleHQpOgogICAgZnJhY3Rpb25fZGljdCA9IHsKICAgICAgICAnMS8yJzogJ2hhbGYnLAogICAgICAgICcxLzQnOiAncXVhcnRlcicsCiAgICAgICAgJzMvNCc6ICd0aHJlZSBxdWFydGVycycsCiAgICAgICAgJzIvMyc6ICd0d28gdGhpcmRzJywKICAgIH0KICAgIHJldHVybiByZS5zdWIocicoPzwhXGQpKD88IVxkLylbMC05XS9bMC05XXsxLDJ9KD8hLz9cZCknLCBsYW1iZGEgeDogZnJhY3Rpb25fZGljdC5nZXQoeC5ncm91cCgpLCB4Lmdyb3VwKCkpLCB0ZXh0KQoKY3VycmVudF9yZXN1bHQgPSByZXBsYWNlX2ZyYWN0aW9ucygiVGhpcyBpcyBhIDEvMiAxLzQuIFByZXNzIDEvMi8zLiBIZSBkcm92ZSBhIGNhciBmb3IgMS8yaG91ci4iKQpwcmludChjdXJyZW50X3Jlc3VsdCk=