【问题标题】:Python IndentationError: unexpected indentPython IndentationError:意外缩进
【发布时间】:2011-12-26 10:03:45
【问题描述】:

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

->

# 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

【问题讨论】:

  • 没有IndentationError here。它必须与dend_date 的定义一起在您的代码中的其他位置。请提供SSCCE
  • 任何半体面的编辑器都可以选择以某种方式直观地显示空格和制表符。使用它。
  • 已将标签更改为空格,现在应该可以复制了。

标签: python indentation


【解决方案1】:

运行你的程序

python -t script.py

如果您有混合制表符和空格,这将警告您。

在 *nix 系统上,您可以通过运行查看选项卡的位置

cat -A script.py

你可以使用命令自动将制表符转换为4个空格

expand -t 4 script.py > fixed_script.py

附言。确保在编程时使用编程编辑器(例如 emacs、vim),而不是文字处理器。使用编程编辑器不会遇到这个问题。

PPS。对于 emacs 用户,M-x whitespace-mode 将在 emacs 缓冲区中显示与 cat -A 相同的信息!

【讨论】:

  • 并不是说 unutbu 在他/她的回答中不完整,我遇到了同样的问题,使用 cat -A script.py 您可以立即看到缺少的缩进。即使您复制和粘贴,它也可能看起来像您的编辑器中的缩进。事实上不是,所以要小心。
  • MacOS 上的cat -A script.py 是什么?
  • @LarsBingchong:根据这个man page,相当于应该是cat -vet script.py
【解决方案2】:

在记事本++中找到所有标签并替换为4个空格。它有效。

【讨论】:

  • 原始问题发布一年半后,您实际上找不到任何新建议。欢迎来到 SO,请在发布自己的答案之前阅读以前的答案。不要重复已经存在的答案。
【解决方案3】:

检查是否混合了制表符和空格,这是缩进错误的常见来源。

【讨论】:

    【解决方案4】:

    您不能混合使用制表符和空格进行标识。最佳做法是将所有制表符转换为空格。

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

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

    【讨论】:

      【解决方案5】:

      只需复制您的脚本并将您的整个代码“””放在“”下...

      在变量中指定这一行.. 像,

      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,现在它将在控制台中打印缩进代码。就是这样

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-04
        • 2022-08-20
        • 2020-12-17
        • 2011-04-24
        • 1970-01-01
        • 2012-05-01
        相关资源
        最近更新 更多