Вы можете обработать каждую строку с помощью регулярного выражения, например:
re.sub(r"(\.\d*)\s*(\d\s{1}\S)", r'\1\2', correct_line)
, например, при вводе:
correct_line = "17 128 15 3.61 0 0 0 3.61 0 0 0 0 0 0"
wrong_line = "17 130 15 11.1 2 0.0 0 0.0 0 2.1 2 3.6 4 0.0 1 0.0 0 0.0 0 4.7 3 0.6 2 0.00"
с правильной строкой ,ничего не изменилось:
re.sub(r"(\.\d*)\s*(\d\s{1}\S)", r'\1\2', correct_line)
# '17 128 15 3.61 0 0 0 3.61 0 0 0 0 0 0'
после разделения стало следующим списком:
['17', '128', '15', '3.61', '0', '0', '0', '3.61', '0', '0', '0', '0', '0', '0']
с неправильной строкой вместо этого мы имеем:
re.sub(r"(\.\d*)\s*(\d\s{1}\S)", r'\1\2', wrong_line)
# '17 130 15 11.12 0.00 0.00 2.12 3.64 0.01 0.00 0.00 4.73 0.62 0.00'
, который когда-то разделился, стал следующим списком:
['17', '130', '15', '11.12', '0.00', '0.00', '2.12', '3.64', '0.01', '0.00', '0.00', '4.73', '0.62', '0.00']