web-dev-qa-db-ja.com

Python IndentationError:予期しないインデント

ここに私のコードがあります...インデントエラーが発生していますが、なぜ発生するのか分かりません。

->

# loop
while d <= end_date:
    # print d.strftime("%Y%m%d")
    fecha = d.strftime("%Y%m%d")
    # set url
    url = 'http://www.wpemergencia.omie.es//datosPub/marginalpdbc/marginalpdbc_' + fecha + '.1'
    # Descargamos fichero
    response = urllib2.urlopen(url)
    # Abrimos fichero
    output = open(fname,'wb')
    # Escribimos fichero
    output.write(response.read())
    # Cerramos y guardamos fichero
    output.close()
    # fecha++
    d += delta
26
miguelfg

でプログラムを実行する

python -t script.py

タブとスペースが混在している場合、警告が表示されます。

* nixシステムでは、実行することでタブの場所を確認できます

cat -A script.py

コマンドでタブを自動的に4つのスペースに変換できます

expand -t 4 script.py > fixed_script.py

PS。プログラミング時には、ワードプロセッサではなく、プログラミングエディタ(emacs、vimなど)を使用してください。プログラミングエディターではこの問題は発生しません。

PPS。 emacsユーザーの場合、 M-x whitespace-modeは、emacsバッファー内からcat -Aと同じ情報を表示します!

47
unutbu

すべてのタブを見つけて、メモ帳++で4つのスペースに置き換えます。

8
user2287824

タブとスペースが混在しているかどうかを確認します。これは、インデントエラーの頻繁な原因です。

7
ilstam

識別のためにタブとスペースを混在させることはできません。ベストプラクティスは、すべてのタブをスペースに変換することです。

これを修正する方法は?各行の前にあるすべてのスペース/タブを削除し、タブORスペースに均一に変換しますが、混在させないでください。最良の解決策:任意のタブを自動的に変換するオプションをエディターで有効にしますスペースに。

また、実際の問題はこのブロックの前の行にある可能性があり、次の識別と一致しない先行する無効なインデントのためにpythonはここでエラーをスローします!

3
Don Question

スクリプトをコピーして、「」「コード全体「」」の下に配置するだけです...

この行を変数で指定します。

a = """ your entire code """
print a.replace('    ','    ') # first 4 spaces tab second four space from space bar

print a.replace('here please press tab button it will insert some space"," here simply press space bar four times")
# here we replacing tab space by four char space as per pep 8 style guide..

ctrl + bを使用してこのコードを崇高に実行すると、インデントされたコードがコンソールに出力されます。それでおしまい