import re result = 0 with open("part2_input.txt", "r") as file_input: raw_key_values = re.findall(r"(mul\(\d+,\d*\))|(do\(\))|(don't\(\))", file_input.read()) key_values = [] for match_tuple in raw_key_values: temp_list = list(match_tuple) temp_filtered_list = list(filter(None, temp_list)) key_values.append(temp_filtered_list[0]) skip = False math_list = [] for item in key_values: if item == "don't()": skip = True continue elif item == "do()": skip = False continue elif skip: continue math_list.append(item) for item in math_list: first_number, second_number = re.findall(r"\d+", item) result += int(first_number) * int(second_number) print(result)