diff --git a/src/humanize/number.py b/src/humanize/number.py index 77b79ab..f903345 100644 --- a/src/humanize/number.py +++ b/src/humanize/number.py @@ -18,6 +18,21 @@ NumberOrString: TypeAlias = float | str +_SUPERSCRIPT_MAP = { + "0": "⁰", + "1": "¹", + "2": "²", + "3": "³", + "4": "⁴", + "5": "⁵", + "6": "⁶", + "7": "⁷", + "8": "⁸", + "9": "⁹", + "-": "⁻", +} + + def _format_not_finite(value: float) -> str: """Utility function to handle infinite and nan cases.""" import math @@ -415,19 +430,6 @@ def scientific(value: NumberOrString, precision: int = 2) -> str: """ import math - exponents = { - "0": "⁰", - "1": "¹", - "2": "²", - "3": "³", - "4": "⁴", - "5": "⁵", - "6": "⁶", - "7": "⁷", - "8": "⁸", - "9": "⁹", - "-": "⁻", - } try: value = float(value) if not math.isfinite(value): @@ -441,14 +443,7 @@ def scientific(value: NumberOrString, precision: int = 2) -> str: import re part2 = re.sub(r"^\+?(\-?)0*(.+)$", r"\1\2", part2) - - new_part2 = [] - for char in part2: - new_part2.append(exponents[char]) - - final_str = part1 + " x 10" + "".join(new_part2) - - return final_str + return part1 + " x 10" + "".join([_SUPERSCRIPT_MAP[char] for char in part2]) def clamp(