• 报错:IndentationError:unindent does not match any outer indentation level


    http://www.cnblogs.com/heimanba/p/3783022.html 看这里

    【问题】 
    一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: 
    IndentationError: unindent does not match any outer indentation level

    【解决过程】 
    1.对于此错误,最常见的原因是,的确没有对齐。但是我根据错误提示的行数,去代码中看了下,没啥问题啊。 
    都是用TAB键,对齐好了的,没有不对齐的行数啊。 
    2.以为是前面的注释的内容影响后面的语句的语法了,所以把前面的注释也删除了。 
    结果还是此语法错误。 
    3.后来折腾了半天,突然想到了,把当前python脚本的所有字符都显示出来看看有没有啥特殊的字符。

    当前用的文本编辑器Notepad++,好像有个设置,可以显示所有的字符的。 
    找到了,在: 
    视图 -> 显示符号 -> 显示空格与制表符

    notepad   显示空格与制表符

    然后就看出问题来了: 
    原来错误的行数是1580行:

    python error line

    但是源码的1580行的对齐用的是点点点的空格,是和前面的几行的对齐所用的箭头表示的TAB键,是不匹配的,即代码的对齐,混用了TAB键和空格:

    1580 space and tab mixed
    而新的Python语法,是不支持的代码对齐中,混用TAB和空格的。所以出现上述错误提示了。

    知道原因了,解决起来就简单了: 
    去把对应的TAB,都改为空格,统一一下对齐的风格,即可。 
    在Notepad++中,去: 
    设置->首选项:

    设置 首选项

    语言->以空格取代(TAB键):

    语言 以空格取代Tab

    即可实现,对于以后每次的TAB输入,都自动转换为4个空格。

    【总结】

    Python中遇到IndentationError,以后第一时间就要想到,是不是由于TAB键和空格混搭使用了。

    估计很多人也都是此类原因导致的。记得统一一下就好。

  • 相关阅读:
    Oracle学习 第25天 Oracle版的Profiler
    Oracle学习 第24天 .net EF连Oracle
    项目中各子系统之间数据交互的方法总结与心得
    Python学习 第7天 爬虫-1 构思
    Oracle学习 第23天 Oracle视图、表、SqlServer、excel、csv的互导
    Python学习 第6天 类、模块、包
    Python学习 第5天 函数
    Javascript/Jquery实现日期前一天后一天
    Javascript/Jquery遇到字符串自动NaN的问题
    Eclipse打包jar
  • 原文地址:https://www.cnblogs.com/wuzhenyang/p/6676058.html
Copyright © 2020-2023  润新知