def sanitize_collection(data):
"""
Sanitizes a collection (list, tuple, dict, or set) by removing potentially harmful characters
and ensuring data types are consistent for testing.
"""
if isinstance(data, list):
sanitized_list = []
for item in data:
if isinstance(item, str):
item = item.strip() # Remove leading/trailing whitespace
item = ''.join(c for c in item if c.isalnum() or c in ['.', '_', ' ', '-']) #allow alphanumeric, ., _, space, -
elif isinstance(item, (int, float)):
pass # Keep numbers as is
else:
item = str(item) #Convert other types to string
sanitized_list.append(item)
return sanitized_list
elif isinstance(data, tuple):
return tuple(sanitize_collection(item) for item in data)
elif isinstance(data, dict):
sanitized_dict = {}
for key, value in data.items():
sanitized_key = sanitize_collection(str(key)) #Sanitize keys
sanitized_dict[sanitized_key] = sanitize_collection(value)
return sanitized_dict
elif isinstance(data, set):
return set(sanitize_collection(item) for item in data)
else:
return data # Return as is if not a supported collection type
Add your comment