Python IndentationError:意外的缩进

时间:2011-12-26 10:03:45

标签: python indentation

这是我的代码......我收到了缩进错误,但我不知道为什么会这样。

- >

# 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

5 个答案:

答案 0 :(得分:47)

使用

运行程序
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相同的信息!

答案 1 :(得分:8)

在notepad ++中查找所有选项卡并替换为4个空格。它工作正常。

答案 2 :(得分:7)

检查是否混合了标签和空格,这是缩进错误的常见原因。

答案 3 :(得分:3)

您不能将标签和空格混合以进行标识。最佳做法是将所有标签转换为空格。

如何解决这个问题?好吧,只需删除每行之前的所有空格/制表符,并将它们统一转换为制表符或空格,但不要混合。最佳解决方案:在编辑器中启用将任何选项卡自动转换为空格的选项。

另请注意,您的实际问题可能在于此块之前的行,并且python会在此处抛出错误,因为前导无效缩进与以下标识不匹配!

答案 4 :(得分:0)

只需复制您的脚本并放在&#34;&#34;&#34;你的整个代码&#34;&#34;&#34; ......

在变量中指定此行..比如,

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..

现在执行此代码,在sublime中使用ctrl + b,现在它将在控制台中打印缩进代码。那是