Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level

以下问题解决是针对EditPlus的。

用Notepad++编辑器的,可以参照http://www.crifan.com/python_syntax_error_indentationerror/comment-page-1/。

我也是看了上面那篇文章改的。

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

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

当前用的文本编辑器EditPlus,好像有个设置,可以显示所有的字符的。 
找到了,在: 
视图 -> 空白 -> 全部

然后就看出问题来了: 

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


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

知道原因了,解决起来就简单了: 
去把对应的TAB,都改为空格,统一一下对齐的风格,即可。 
在EditPlus中,去: 
文档>制表符/缩排:

勾上 插入空格代替制表符:

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

【总结】

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

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

posted on 2014-11-12 10:27  hanhanzhu  阅读(3439)  评论(0编辑  收藏  举报