Определить стиль отступа исходного файла - PullRequest
0 голосов
/ 09 февраля 2019

Я пишу инструмент, который связан с внедрением кода в код Python и его перекомпиляцией.

Мне нужно иметь возможность определить, использует ли данный исходный файл (или функция внутри него) пробелы илиВкладки как символ отступа.Есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 09 февраля 2019

Вы можете попытаться выполнить синтаксический анализ документа по новой строке без обрезки, а затем проверить, начинается ли каждая строка с пробела или табуляции, а затем завершается, как только обнаруживается какая-либо из них?Например:

re.match(' ', line): -> space
re.match('\t', line): -> tab

В качестве альтернативы вы можете использовать метод startwith () - запустить его в цикле и выйти, как только вы обнаружите в начале строки табуляцию или пробел.:

' foo'.startswith(('\s'))
True
'   foo'.startswith(('\t'))
True

В качестве потенциальной проблемы я вижу одну вещь: если файл использует вкладки, но кто-то нажал пробел перед тем, как вставить комментарий (#) - но я думаю, что обнаружение комментариев и их игнорирование не должно быть трудным.

...