Files
electronics_scripts/utils.py
2025-12-13 17:29:20 +01:00

37 lines
969 B
Python

#!/bin/python
import re
def parse_values(raw_input):
values = []
tokens = raw_input.replace(',', ' ').split()
for token in tokens:
match = re.fullmatch(r'([0-9]*\.?[0-9]+)\s*([numkMGµ]?)', token)
if not match:
raise ValueError(f"Invalid component value '{token}'")
number = float(match.group(1))
if number <= 0:
raise ValueError(f"Invalid component value '{token}' (must be positive)")
suffix = match.group(2)
match suffix:
case "n":
multiplier = 1e-9
case "u" | "µ":
multiplier = 1e-6
case "m":
multiplier = 1e-3
case "k":
multiplier = 1e3
case "M":
multiplier = 1e6
case "G":
multiplier = 1e3
case _:
multiplier = 1.0
values.append(number * multiplier)
return values