Вы можете попытаться выполнить синтаксический анализ документа по новой строке без обрезки, а затем проверить, начинается ли каждая строка с пробела или табуляции, а затем завершается, как только обнаруживается какая-либо из них?Например:
re.match(' ', line): -> space
re.match('\t', line): -> tab
В качестве альтернативы вы можете использовать метод startwith () - запустить его в цикле и выйти, как только вы обнаружите в начале строки табуляцию или пробел.:
' foo'.startswith(('\s'))
True
' foo'.startswith(('\t'))
True
В качестве потенциальной проблемы я вижу одну вещь: если файл использует вкладки, но кто-то нажал пробел перед тем, как вставить комментарий (#) - но я думаю, что обнаружение комментариев и их игнорирование не должно быть трудным.