Прежде всего, излишне запускать совпадение дважды - вместо этого запускайте его, сохраняйте результат и отклоняйте от него:
m = re.match(regex.new_round, hh_line)
if m:
# ...
Далее, если у вас есть куча комбинаций регулярных выражений -> обработки, вы можете вместо этого сделать наложение регулярных выражений -> отображений функций, а затем просто выполнить итерации по нему:
def process_a(data):
# ...
def process_b(data):
# ...
regex_to_process = {
'regex_a': process_a,
'regex_b': process_b,
}
for hh_line in <file object>:
for regex,process in regex_to_process.iteritems():
m = re.match(regex, hh_line)
if m:
process(hh_line)