import re
def clean_cookies(cookie_string):
"""
Cleans a cookie string for data migration. Handles various edge cases.
Args:
cookie_string: The raw cookie string to clean.
Returns:
A list of cleaned cookie dictionaries. Returns an empty list if input is invalid.
"""
if not isinstance(cookie_string, str):
return [] # Handle invalid input
cleaned_cookies = []
cookie_list = cookie_string.split(';')
for cookie in cookie_list:
cookie = cookie.strip() # Remove leading/trailing whitespace
if not cookie:
continue # Skip empty cookies
try:
name, value = cookie.split('=', 1) # Split into name and value
name = name.strip().strip('"')
value = value.strip().strip('"')
# Handle potential issues with value containing '='
value = re.sub(r'=', '', value)
cleaned_cookies.append({
'name': name,
'value': value
})
except ValueError:
# Handle cookies without '='
print(f"Warning: Invalid cookie format: {cookie}. Skipping.")
continue
except Exception as e:
print(f"Error processing cookie: {cookie}. Skipping. Error: {e}")
continue
return cleaned_cookies
if __name__ == '__main__':
# Example Usage
cookie_data = """
"name=value1"; name2=value2; name3=value3=with=equals;
"name with spaces"=value with spaces;
invalid cookie;
"""
cleaned_data = clean_cookies(cookie_data)
print(cleaned_data)
Add your comment