Отступ Python - PullRequest
       29

Отступ Python

3 голосов
/ 15 марта 2012

Я видел, что есть похожие названия для этого.Но мой случай кажется немного страннее.Я как-то использовал смесь PyCharm и Vim (а в Vim у меня есть tabstop = 4 и shiftwidth = 2), и мой код на Python кажется нефиксированным, с отступом.Сначала я увидел, что в Vim все было неправильно выровнено, поэтому я перестроил все;но затем, когда я запускаю его, я получаю сообщение об ошибке, что есть неожиданный отступ, хотя в Vim все выглядит идеально выровненным.Вот пример (вот как это выглядит в Vim):

for f in files:
    for line in f:
        items = line.strip().split()
        items = items[2:]
        items = ' '.join(items).split(', ')

Когда я запускаю его, я получаю:

File "getEsSynonymLSAVectors.py", line 136
    items = items[2:]
    ^
IndentationError: unexpected indent

Я использовал PythonTidy ,Я использовал reindent, я пытался :retab, я пробовал ручное выравнивание - кажется, ничто не может исправить это.Любой опыт / советы будут оценены.

Ответы [ 2 ]

9 голосов
/ 15 марта 2012

В Python по умолчанию табуляция обрабатывается как 8 пробелов. Если вы пропускаете отступы, вам, как правило, нужно переключать вкладки на пробелы (или наоборот, но я обычно нахожу, что с пробелами легче иметь дело).Поэтому убедитесь, что vim показывает табуляцию шириной 8 пробелов (:set ts=8), чтобы увидеть, что видит Python.

Чтобы исправить ошибки табуляции в vim, я обычно делаю следующее: сначала мне нужно уметьчтобы увидеть вкладки, я включил поиск по выделенным областям (:set hlsearch) и поиск по вкладкам (/\t).Затем я наблюдаю за областями, которые необходимо повторно пометить.Затем я пытаюсь найти правильную настройку ширины вкладки vim для файла (:set ts=n и изменять n, пока все не будет выглядеть хорошо), включить расширение вкладки (:set et), а затем запустить автоматическое исправление вкладки (:retab),Когда все остальное терпит неудачу, перезагрузите вручную.

Если вы используете управление версиями, обязательно внесите изменения в файлы перед изменениями и вручную убедитесь, что вы не внесли ошибку из-за непреднамеренных изменений в уровне отступов.Если вы не используете контроль версий, сохраните резервную копию и запустите diff для файлов.

2 голосов
/ 15 марта 2012

Попробуйте что-то вроде этого.

Сначала установите соответствующие настройки. Всегда используйте 4 пробела. Поэтому измените его на табуляцию = 4 пробела.

Сначала преобразуйте все пробелы во вкладки. А затем преобразовать все вкладки в пробелы. (Я использую Geany)

У меня сработало много раз.

...