Я предлагаю использовать вложенные re.sub
s:
re.sub(r'^[\d\s]+', lambda x: re.sub(r'\s+', '\t', x.group()), line)
Чтобы избавиться от пробелов при запуске, используйте line.lstrip()
перед запуском регулярного выражения:
re.sub(r'^[\d\s]+', lambda x: re.sub(r'\s+', '\t', x.group()), line.lstrip())
Первый ^[\d\s]+
соответствует всем цифрам и пробелам в начале строки, а вторая re.sub
заменяет строки пробелов одной вкладкой.
Вывод (для строк без .lstrip()
):
255\t255\t255\twhite
\t0\t0\t0\tblack
\t47\t79\t79\tdark slate gray
\t47\t79\t79\tDarkSlateGray
\t47\t79\t79\tDarkSlateGrey
105\t105\t105\tdim gray
Вывод (для строк с .lstrip()
):
255\t255\t255\twhite
0\t0\t0\tblack
47\t79\t79\tdark slate gray
47\t79\t79\tDarkSlateGray
47\t79\t79\tDarkSlateGrey
105\t105\t105\tdim gray