import re from card import Card from safeeval import eval_const def eval_card(expr): suit, number = re.findall('''Card *\("([A-Z]+)" *, *([0-9]+)\)''', expr)[0] return Card(suit, int(number)) def eval_list(expr): result = [] for suit, number in re.findall('''Card *\("([A-Z]+)" *, *([0-9]+)\)''', expr): result.append(Card(suit, int(number))) return result def eval_dict(expr): expr.replace("Card", "") dict = eval_const(expr) resultdict = {} for key, value in dict.items(): if isinstance(key, tuple): key = Card(*key) if isinstance(value, tuple): value = Card(*value) resultdict[key] = value return resultdict