【亲测有效】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键和空格混搭使用了。

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

最新文章

  1. NFS网络共享服务部署
  2. [转]比较Jmeter、Grinder和JAVA多线程本身压力测试所带来的性能开销
  3. 40.扑克牌的顺子[Continuous cards]
  4. Java:内部类(静态内部类、成员内部类、局部内部类、匿名内部类)
  5. Struts1、Struts2和SpringMVC剖析【转载】
  6. 《A First Course in Probability》-chaper4-离散型随机变量-随机变量函数的期望
  7. Eclipse代码注释模板修改
  8. (转)SQL Server 2008怎样编辑200行以上的数据
  9. leetcode--009 Linked List Cycle I
  10. 网页在ios下点击无效的原因
  11. Redis能干啥?细看11种Web应用场景
  12. spring cloud配置高可用eureka时遇到的一些坑
  13. Vue项目用于Ios和Android端开发
  14. 在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码。
  15. MyEclipse2014安装插件的几种方式(适用于Eclipse或MyEclipse其他版本)
  16. 回声状态网络(ESN)基础教程
  17. JAVA每日一旅
  18. jquery组件和插件写法
  19. MongoDB2.x升级到3.x解决方案
  20. HDU 3530 单调队列

热门文章

  1. Java 第十一届 蓝桥杯 省模拟赛 小明植树(DFS)
  2. Java实现 蓝桥杯VIP 算法训练 字符串逆序
  3. Java实现 LeetCode 295 数据流的中位数
  4. Java实现 蓝桥杯VIP 算法提高 色盲的民主
  5. Java实现 LeetCode 108 将有序数组转换为二叉搜索树
  6. Java实现 LeetCode 76 最小覆盖子串
  7. Flask 项目目录蓝图
  8. mysql常见聚合函数
  9. spring源码解读-ioc
  10. Linux系统命令详解