Проблема заключается в том, что вы соответствуете всей части телефонного номера, начиная с первой цифры и заканчивая последней цифрой, включая любые пробелы, тире или скобки между ними.
Чтобы исправить этовы должны соответствовать только группы цифр.Вы можете сделать это, используя группы захвата и используя одну для каждой группы цифр, т.е. [3] - [3] - [4].
Например:
phone_list = []
lines = ["(123) 456 7890", "234-567-9999", "345 569 2411"]
for line in lines:
re_match = re.search("(\d{3}).*(\d{3}).*(\d{4})", line)
if re_match:
formatted_number = "".join(re_match.groups())
phone_list.append(formatted_number)
С результатом дляphone_list
:
['1234567890', '2345679999', '3455692411']