У меня есть некоторый код Python, который имеет несовместимые отступы. Существует множество сочетаний вкладок и пробелов, которые еще больше усугубляют ситуацию, и даже пробелы не сохраняются.
Код работает, как и ожидалось, но его сложно поддерживать.
Как я могу исправить отступы (как HTML Tidy , но для Python), не нарушая код?
autopep8
обеспечивает отступ и многое другое: stackoverflow.com/questions/14328406/…Ответы:
Используйте
reindent.py
скрипт, который вы найдете вTools/scripts/
каталоге вашей установки Python:Посмотрите на этот скрипт для получения подробных инструкций по использованию.
источник
python-examples
пакет.python-examples
будет установлен, вы найдете в нем отступ/usr/share/doc/pythonX.X/examples/Tools/scripts/reindent.py
.Если вы используете Vim , смотрите
:h retab
.Например, если вы просто напечатаете
все ваши вкладки будут развернуты в пробелы.
Вы можете захотеть
чтобы убедиться, что любые новые строки не будут использовать буквенные вкладки.
Если вы не используете Vim,
заменяет табуляцию пробелами, при условии, что табуляция останавливается через каждые 8 символов
file.py
(с оригинальным переходомfile.py.bak
, на всякий случай). Замените 8-е на 4-е, если вместо табуляции используются каждые 4 пробела.источник
Я бы достиг autopep8, чтобы сделать это:
Примечание: E101 и E121 - это отступ pep8 (я думаю, вы можете просто пропустить,
--select=E1
чтобы исправить все проблемы, связанные с отступами - те, которые начинаются с E1).Вы можете применить это ко всему вашему проекту, используя рекурсивный флаг:
Смотрите также Инструмент для преобразования кода Python в PEP8-совместимый .
источник
autopep8
не удается, если синтаксис неверен. Вы можете подтвердить, что с помощьюpython -tt <file.py>
autopep8 -i script.py
Используйте autopep8
autopep8
автоматически форматирует код Python в соответствии сPEP 8
nullstyle
руководством. Он используетpep8
утилиту, чтобы определить, какие частиnullcode
нужно отформатировать.autopep8
способен исправить большинствоnullformatting
проблем, о которых можно сообщитьpep8
.источник
Используя Vim, он не должен быть более сложным, чем нажимать Esc, а затем печатать ...
... в файле, который вы хотите изменить. Это преобразует все вкладки в четыре пробела. Если у вас также непоследовательный интервал, тогда это будет сложнее.
источник
Существует также PythonTidy (так как вы сказали, что вам нравится HTML Tidy).
Это может сделать намного больше, чем просто очистить вкладки, хотя. Если вам нравятся такие вещи, стоит посмотреть.
источник
На большинстве UNIX-подобных систем вы также можете запустить:
из командной строки, изменив номер, если вы хотите заменить вкладки с количеством пробелов, отличных от 4. Вы можете легко написать сценарий оболочки, чтобы сделать это с кучей файлов одновременно, сохраняя оригинальные имена файлов.
источник
Если вы ленивы (как и я), вы также можете загрузить пробную версию Wingware Python IDE, в которой есть инструмент для автоматического исправления ошибок. Это работает довольно хорошо. http://www.wingware.com/
источник
Сценарий переопределения не работал для меня, из-за отсутствия модуля. Во всяком случае, я нашел эту
sed
команду, которая идеально подходит для меня:источник
Попробуйте Emacs. Он имеет хорошую поддержку для отступов, необходимых в Python. Пожалуйста, проверьте эту ссылку http://python.about.com/b/2007/09/24/emacs-tips-for-python-programmers.htm
источник
Попробуйте IDLE и используйте Alt+, Xчтобы найти отступ.
источник
У меня есть простое решение этой проблемы. Вы можете сначала набрать ": retab", а затем ": retab!", Тогда все будет хорошо
источник
:retab
" в каком контексте. В Vim ?В случае, если вы пытаетесь найти инструмент для создания вашего
2-space indented
скрипта Python доtab indented
версии, просто используйте этот онлайн-инструмент:https://www.tutorialspoint.com/online_python_formatter.htm
источник