#!/usr/bin/env python3 import re STRINGS = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] lines = (x.strip() for x in open("input.txt")) total = 0 regexFirst = re.compile(f"^.*?(\\d|{'|'.join(STRINGS)})") regexLast = re.compile(f"^.*(\\d|{'|'.join(STRINGS)})") def parse(value): return str(STRINGS.index(value) + 1) if value in STRINGS else value for line in lines: first = parse(regexFirst.match(line).group(1)) last = parse(regexLast.match(line).group(1)) total += int(first + last) print(total)