number_utils.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. """
  2. 数字解析工具模块
  3. 提供数字解析和标准化功能:
  4. - 解析数字(处理千分位和货币符号)
  5. - 标准化文本型数字
  6. """
  7. import re
  8. def parse_number(text: str) -> float:
  9. """
  10. 解析数字,处理千分位和货币符号
  11. Args:
  12. text: 包含数字的文本
  13. Returns:
  14. 解析后的浮点数
  15. """
  16. if not text:
  17. return 0.0
  18. clean_text = re.sub(r'[¥$€£,,\s]', '', text)
  19. is_negative = False
  20. if clean_text.startswith('-') or clean_text.startswith('−'):
  21. is_negative = True
  22. clean_text = clean_text[1:]
  23. if clean_text.startswith('(') and clean_text.endswith(')'):
  24. is_negative = True
  25. clean_text = clean_text[1:-1]
  26. try:
  27. number = float(clean_text)
  28. return -number if is_negative else number
  29. except ValueError:
  30. return 0.0
  31. def normalize_text_number(text: str) -> str:
  32. """
  33. 标准化文本型数字:移除空格和连字符
  34. Args:
  35. text: 文本型数字(如账号、订单号)
  36. Returns:
  37. 标准化后的文本
  38. """
  39. if not text:
  40. return ""
  41. return re.sub(r'[\s\-\u3000]', '', text)