strings.py 604 B

12345678910111213141516171819202122232425
  1. # Copyright (c) 2010-2024 openpyxl
  2. from datetime import datetime
  3. from math import isnan, isinf
  4. import sys
  5. VER = sys.version_info
  6. from .numbers import NUMERIC_TYPES
  7. def safe_string(value):
  8. """Safely and consistently format numeric values"""
  9. if isinstance(value, NUMERIC_TYPES):
  10. if isnan(value) or isinf(value):
  11. value = ""
  12. else:
  13. value = "%.16g" % value
  14. elif value is None:
  15. value = "none"
  16. elif isinstance(value, datetime):
  17. value = value.isoformat()
  18. elif not isinstance(value, str):
  19. value = str(value)
  20. return value