1. def sanitize_collection(data):
  2. """
  3. Sanitizes a collection (list, tuple, dict, or set) by removing potentially harmful characters
  4. and ensuring data types are consistent for testing.
  5. """
  6. if isinstance(data, list):
  7. sanitized_list = []
  8. for item in data:
  9. if isinstance(item, str):
  10. item = item.strip() # Remove leading/trailing whitespace
  11. item = ''.join(c for c in item if c.isalnum() or c in ['.', '_', ' ', '-']) #allow alphanumeric, ., _, space, -
  12. elif isinstance(item, (int, float)):
  13. pass # Keep numbers as is
  14. else:
  15. item = str(item) #Convert other types to string
  16. sanitized_list.append(item)
  17. return sanitized_list
  18. elif isinstance(data, tuple):
  19. return tuple(sanitize_collection(item) for item in data)
  20. elif isinstance(data, dict):
  21. sanitized_dict = {}
  22. for key, value in data.items():
  23. sanitized_key = sanitize_collection(str(key)) #Sanitize keys
  24. sanitized_dict[sanitized_key] = sanitize_collection(value)
  25. return sanitized_dict
  26. elif isinstance(data, set):
  27. return set(sanitize_collection(item) for item in data)
  28. else:
  29. return data # Return as is if not a supported collection type

Add your comment