def sanitize_user_data(user_data):
"""
Sanitizes user data for compatibility with older systems.
Replaces potentially problematic values with safe alternatives.
"""
sanitized_data = user_data.copy() #Avoid modifying the original dict
# Replace potentially problematic characters in names/titles
for key, value in sanitized_data.items():
if isinstance(value, str):
sanitized_data[key] = value.replace(" ", "_") #Replace spaces with underscores
sanitized_data[key] = sanitized_data[key].replace("<", "<") #Escape less than
sanitized_data[key] = sanitized_data[key].replace(">", ">") #Escape greater than
sanitized_data[key] = sanitized_data[key].replace("\"", """) #Escape double quote
sanitized_data[key] = sanitized_data[key].replace("'", "'") #Escape single quote
sanitized_data[key] = sanitized_data[key].replace("\\", "\") #Escape backslash
#Handle date formats
if 'birthdate' in sanitized_data:
try:
#Attempt to convert to a standard format. Handle potential errors.
from datetime import datetime
birthdate_str = sanitized_data['birthdate']
sanitized_data['birthdate'] = datetime.strptime(birthdate_str, '%Y-%m-%d').strftime('%Y%m%d') #YYYYMMDD
except (ValueError, TypeError):
sanitized_data['birthdate'] = None #Set to None if conversion fails
#Handle phone numbers (remove special characters)
if 'phone_number' in sanitized_data:
if isinstance(sanitized_data['phone_number'], str):
sanitized_data['phone_number'] = ''.join(filter(str.isdigit, sanitized_data['phone_number'])) #Keep only digits
return sanitized_data
Add your comment