以下問題解決是針對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鍵和空格混搭使用了。
估計很多人也都是此類原因導致的。記得統一一下就好。
