(text, unit)
| 59 | |
| 60 | |
| 61 | def normalize_answer(text, unit): |
| 62 | # ["1,000", "123", "3/4", "56.456", "$56.4", "-3", "-10.02", "-3/2"] |
| 63 | |
| 64 | text = re.sub(r'^[\$]', '', text) |
| 65 | text = re.sub(r'[\,\.\,\/]$', '', text) |
| 66 | |
| 67 | result = re.match(r'^[-+]?[\d,./]+$', text) |
| 68 | |
| 69 | if result is not None: |
| 70 | # is number? |
| 71 | text = text.replace(',', '') |
| 72 | result = re.match(r'[-+]?\d+$', text) |
| 73 | |
| 74 | if result is not None: |
| 75 | number = int(text) |
| 76 | elif '/' in text: |
| 77 | nums = text.split('/') |
| 78 | number = round(float(nums[0]) / float(nums[1]), 3) |
| 79 | else: |
| 80 | number = round(float(text), 3) |
| 81 | number = str(number) |
| 82 | number = re.sub(r'\.[0]+$', '', number) |
| 83 | return number |
| 84 | else: |
| 85 | # is text |
| 86 | if unit: |
| 87 | text = text.replace(unit, '').strip() |
| 88 | return text |
| 89 | |
| 90 | |
| 91 | def score_string_similarity(str1, str2): |
no test coverage detected