У меня есть несколько файлов .py, в которых используются пробелы для отступов, и я хотел бы преобразовать их во вкладки.
Я мог бы легко собрать что-нибудь, используя регулярные выражения, но я могу вспомнить несколько крайних случаев, когда этот подход может потерпеть неудачу. Есть ли инструмент, который делает это, анализируя файл и определяя уровень отступа так же, как это делает интерпретатор Python?






Если файлов для преобразования не так много, вы можете открыть их в vim и использовать команду :retab.
См. документация vim для получения дополнительной информации.
Python включает сценарий для противоположного (табуляции на пробелы). Для меня это C:\Python24\Tools\Scripts\reindent.py
stringvar.expandtabs (tabsize = 8) - наоборот. Апрель 2018, версия 2.17
В emacs M-x tabify преобразует пробелы в табуляции, где это возможно. Вероятно, вы захотите правильно установить переменную tab-width.
Я не знаю, решает ли это ваше беспокойство о том, что пробелы интерпретируются так же, как интерпретатор python, но вы всегда можете загрузить python-mode и использовать M-x indent-region.
: retab заменяет табуляцию пробелами, а: retab! поменяет местами пробелы с табуляцией. 1 табуляция = 4 пробела, 4 пробела = 1 табуляция, в зависимости от настроек вкладки.
+1, не знал, что это работает в обоих направлениях; он использует настройку tabstop, предположительно?
Если вы используете Linux, вы также можете поэкспериментировать с не раскрывать:
Convert blanks in each FILE to tabs, writing to standard output. With no FILE, or when FILE is -, read standard input.
Если хотите, вы найдете сборку win32.
Это недоступно в Linux, даже на py26.