一貫性のないインデントを持ついくつかのPythonコードがあります。問題をさらに悪化させるタブとスペースの混合がたくさんあり、スペースのインデントすら保持されません。
コードは期待どおりに機能しますが、維持するのは困難です。
コードを壊すことなくインデント(HTML TidyのようですがPythonの場合)を修正するにはどうすればよいですか?
autopep8インデントなどがはるかに提供しています。stackoverflow.com/questions/14328406/...
一貫性のないインデントを持ついくつかのPythonコードがあります。問題をさらに悪化させるタブとスペースの混合がたくさんあり、スペースのインデントすら保持されません。
コードは期待どおりに機能しますが、維持するのは困難です。
コードを壊すことなくインデント(HTML TidyのようですがPythonの場合)を修正するにはどうすればよいですか?
autopep8インデントなどがはるかに提供しています。stackoverflow.com/questions/14328406/...
回答:
Pythonインストールのディレクトリにあるreindent.pyスクリプトを使用しTools/scripts/ます。
Python(.py)ファイルを変更して、4スペースのインデントを使用し、ハードタブ文字を使用しないようにします。また、行の終わりから余分なスペースとタブを削除し、ファイルの終わりにある空の行を削除します。また、最後の行が改行で終わっていることを確認してください。
詳しい使用方法については、そのスクリプトをご覧ください。
python-examplesパッケージに分割されています。
python-examplesです:がインストールされると、でreindentが見つかります/usr/share/doc/pythonX.X/examples/Tools/scripts/reindent.py。
Vimを使用している場合は、を参照してください:h retab。
*:ret * *:retab *
:[範囲] ret [ab] [!] [new_tabstop]
を含む空白のシーケンスをすべて置き換えます
<Tab>は、新しい空白文字列を使用して、新しい
与えられたタブストップ値。新規指定しない場合
タブストップサイズまたはゼロの場合、Vimは現在の値を使用します
「タブストップ」の。
「tabstop」の現在の値は常に
既存のタブの幅を計算します。
!を使用すると、Vimは通常の文字列のみを置き換えます
必要に応じてタブ付きのスペース。
「expandtab」をオンにすると、Vimはすべてのタブを
適切な数のスペース。
このコマンドは、「tabstop」を指定された新しい値に設定します。
そして、それがデフォルトであるファイル全体に対して実行された場合、
目に見える変化はないはずです。
注意:このコマンドは<Tab>文字を変更します
Cプログラムの文字列の内部。回避するには「\ t」を使用します
これ(とにかく良い習慣です)。
「:retab!」スペースのシーケンスを変更することもできます
<Tab>文字。printf()を混乱させる可能性があります。
{Viにはない}
| + ex_extra |の場合は使用できません で機能が無効になりました
コンパイル時間。
たとえば、単に次のように入力した場合
:ret
すべてのタブがスペースに展開されます。
あなたがしたいかもしれません
:se et ":set expandtabの省略形
新しい行がリテラルタブを使用しないようにします。
Vimを使用していない場合は、
perl -i.bak -pe "s / \ t / '' x(8-pos()%8)/ eg" file.py
タブが8文字ごとに停止すると想定して、タブをスペースに置き換えますfile.py(念のためfile.py.bak、元の文字列はに移動します)。タブストップが4スペースごとにある場合は、8を4に置き換えます。
$ # see what changes it would make
$ autopep8 path/to/file.py --select=E101,E121 --diff
$ # make these changes
$ autopep8 path/to/file.py --select=E101,E121 --in-place
注:E101およびE121はpep8インデントです(--select=E1E1で始まるインデント関連のすべての問題を修正するために単純に合格できると思います)。
これは、再帰フラグを使用してプロジェクト全体に適用できます。
$ autopep8 package_dir --recursive --select=E101,E121 --in-place
PythonコードをPEP8準拠に変換するツールも参照してください。
autopep8構文が正しくない場合は失敗します。あなたはそれを使用して確認できますpython -tt <file.py>
autopep8 -i script.pyautopep8を使用する
autopep8 PEP 8
nullstyleガイドに準拠するようにPythonコードを自動的にフォーマットします。pep8ユーティリティを使用して、nullcodeフォーマットする必要のある部分を決定
します。autopep8がnullformatting報告できる問題のほとんどを修正
できますpep8。
pip install autopep8
autopep8 script.py # print only
autopep8 -i script.py # write file
Vimを使用する場合Escは、を押してから入力する以上の操作は必要ありません。
:%s/\t/ /g
...変更するファイル。これにより、すべてのタブが4つのスペースに変換されます。間隔にもばらつきがある場合は、さらに難しくなります。
PythonTidyもあります(HTML Tidyが好きだと言っていたからです)。
ただし、タブをクリーンアップするだけではありません。そのようなものが好きなら、一見の価値があります。
ほとんどのUNIXライクなシステムでは、次のものも実行できます。
expand -t4 oldfilename.py > newfilename.py
タブを4以外のスペースに置き換える場合は、コマンドラインから番号を変更します。元のファイル名を保持したまま、一連のファイルを使用してこれを行うシェルスクリプトを簡単に作成できます。
(私のように)怠惰な場合は、Wingware Python IDEの試用版をダウンロードすることもできます。それはかなりうまくいきます。 http://www.wingware.com/
一部のモジュールが欠落しているため、再インデントスクリプトは機能しませんでした。とにかく、私sedは仕事を完璧にするこのコマンドを見つけました:
sed -r 's/^([ ]*)([^ ])/\1\1\2/' file.py
Emacsを試してください。Pythonで必要なインデントをサポートしています。このリンクを確認してくださいhttp://python.about.com/b/2007/09/24/emacs-tips-for-python-programmers.htm
この問題の簡単な解決策があります。最初に「:retab」と入力してから「:retab!」と入力すると、すべてうまくいきます
:retabどのコンテキストで「」と入力します。ではVimの?
2-space indentedpythonスクリプトをtab indentedバージョンにするツールを見つけようとする場合は、次のオンラインツールを使用してください。