IndentationError: unindent does not match any outer indentation level解决策略
【亲测有效】Nodepad++/Sublime Text3中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level解决策略
我在开发游戏的时候,发现一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误:
IndentationError: unindent does not match any outer indentation level
【解决过程】
以下我将提供两种环境对错误进行更改:
Nodepad++:
1.对于此错误,最常见的原因是,的确没有对齐。但是我根据错误提示的行数,去代码中看了下,没啥问题啊。
都是用TAB键,对齐好了的,没有不对齐的行数啊。
2.以为是前面的注释的内容影响后面的语句的语法了,所以把前面的注释也删除了。
结果还是此语法错误。
3.后来折腾了半天,突然想到了,把当前python脚本的所有字符都显示出来看看有没有啥特殊的字符。
当前用的文本编辑器Notepad++,好像有个设置,可以显示所有的字符的。
找到了,在:
视图 -> 显示符号 -> 显示空格与制表符
然后就看出问题来了:
原来错误的行数是1580行:
但是源码的1580行的对齐用的是点点点的空格,是和前面的几行的对齐所用的箭头表示的TAB键,是不匹配的,即代码的对齐,混用了TAB键和空格:
而新的Python语法,是不支持的代码对齐中,混用TAB和空格的。所以出现上述错误提示了。
知道原因了,解决起来就简单了:
去把对应的TAB,都改为空格,统一一下对齐的风格,即可。
在Notepad++中,去:
设置->首选项:
语言->以空格取代(TAB键):
即可实现,对于以后每次的TAB输入,都自动转换为4个空格。
Sublime Text3:
直接在View - Indentation 下的命令可控制转换
【总结】
Python中遇到IndentationError,以后第一时间就要想到,是不是由于TAB键和空格混搭使用了。
估计很多人也都是此类原因导致的。记得统一一下就好
最新文章
- NFS网络共享服务部署
- [转]比较Jmeter、Grinder和JAVA多线程本身压力测试所带来的性能开销
- 40.扑克牌的顺子[Continuous cards]
- Java:内部类(静态内部类、成员内部类、局部内部类、匿名内部类)
- Struts1、Struts2和SpringMVC剖析【转载】
- 《A First Course in Probability》-chaper4-离散型随机变量-随机变量函数的期望
- Eclipse代码注释模板修改
- (转)SQL Server 2008怎样编辑200行以上的数据
- leetcode--009 Linked List Cycle I
- 网页在ios下点击无效的原因
- Redis能干啥?细看11种Web应用场景
- spring cloud配置高可用eureka时遇到的一些坑
- Vue项目用于Ios和Android端开发
- 在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码。
- MyEclipse2014安装插件的几种方式(适用于Eclipse或MyEclipse其他版本)
- 回声状态网络(ESN)基础教程
- JAVA每日一旅
- jquery组件和插件写法
- MongoDB2.x升级到3.x解决方案
- HDU 3530 单调队列