4

expected an indented blockスペースの代わりにタブを使用したことが原因である可能性が高い、目に見えないエラーがあります。

「検索/置換」ウィンドウを開いてフィールドに入力しようとするTABと、find当然 IDLE がフィールドにスキップしreplaceます。

どうすればいいですか?


最終更新:

すべての回答に感謝します。私の問題は、Pythonが関数のコメントもインデントしたいということでした。

def imdheladumb():
"""
I'm dum as hel
"""

動作しません。動作する必要があります

def imdheladumb():
    """
    I'm dum as hel
    """
4

4 に答える 4

4

IDLE では、リテラルのタブ文字を検索できません。1 つを検索ボックスに貼り付けることはできますが (will の提案に従って)、何にも一致しません。

ただし、正規表現検索を行うことができ、正規表現\tはリテラル タブと一致します。したがって、チェックボックスをオンにして、Regular expressionボックスに ' を入れ\tFind:ボックスに 4 つまたは 8 つのスペース (必要に応じて) をReplace:入れます。

しかし、示唆されているように、手動で行うよりも IDLE の機能を使用する方が良いでしょう: タブ付き (または一貫性のない) インデントのあるコード ブロックを選択し、Formatメニューに移動して、 を選択しますUntabify Region。(または単に control-6 を押します。) タブが 4 スペース タブを使用するエディターで挿入された場合、最初に使用New Indent Widthして 4 に変更し、次にUntabify Region.

IDLE には、一貫性のないコードを記述したときのタブ サイズを推測するコードがありません。私が知っている唯一のエディターは emacs です。ファイルを emacs で開くと、設定が推測され、バッファ全体とuntabify-region. 推測が正しければ、あなたはゴールデンです。間違っていると推測した場合は、バッファを保存しないでください。修正がさらに難しくなるためです。(もしあなたが世界で 3 人のうちの 1 人で、emacs の Lisp の読み方を知っているが、emacs が好きではないという人なら、python-mode.elソースを調べて、その魔法がどのように機能するかを見ることができます。)

于 2012-12-03T21:24:33.453 に答える
2

これを行う一般的な方法は、ドキュメントからタブ文字をコピーして (またはランダムなテキスト エディターでタブ文字をコピーして)、それをフィールドに入れることです。

そこに入れてみることもできますが\t、それは一部のエディターでしか機能しません。

ほとんどの IDE には、タブを定義済みの数のスペースに自動的に置き換える機能があります。私はそれをオンにすることをお勧めします...

編集:何らかの理由で別の場所でタブを使用している場合、標準の検索と置換を行うのは危険です。

ここを見ると、「tabify region」というオプションがあります。それはあなたにとってより興味深いかもしれません。

于 2012-12-03T21:14:30.050 に答える
1

そのためのアプリがあるはずです。;)

やり過ぎが好きなら、次のような正規表現を使ってコードを実行するのはどうでしょうか。

re.sub('\t', '\s\s\s\s', yourCode)
于 2012-12-03T21:22:52.310 に答える