Ответсообщение недоступно
Вот мой код к задаче Т. База данных пользователей. На 3 тесте ловлю ошибку RE. Подскажите пожалуйста, что не так?
from datetime import datetime
import re
_database = []
def insert(*users):
for user in users:
if any(u['id'] == user['id'] for u in _database):
raise ValueError(f"User with id {user['id']} already exists")
if any(u['name'] == user['name'] for u in _database):
raise ValueError(f"User with name {user['name']} already exists")
_database.append(user)
def select(condition=None):
filtered_users = _database.copy()
if condition:
match = re.match(r'^(\w+)\s*(<=|>=|<|>|==)\s*(.+)$', condition.strip())
if not match:
raise ValueError("Invalid condition format")
field, operator, value = match.groups()
def compare(user):
try:
if field == 'id':
user_value = user['id']
value_casted = int(value)
elif field == 'name':
user_value = user['name']
value_casted = value # строка
elif field == 'birth':
user_value = datetime.strptime(user['birth'], '%d.%m.%Y')
value_casted = datetime.strptime(value, '%d.%m.%Y')
else:
return False
if operator == '<':
return user_value < value_casted
elif operator == '>':
return user_value > value_casted
elif operator == '<=':
return user_value <= value_casted
elif operator == '>=':
return user_value >= value_casted
elif operator == '==':
return user_value == value_casted
except (KeyError, ValueError):
return False
filtered_users = [u for u in filtered_users if compare(u)]
return sorted(filtered_users, key=lambda x: x['id'])