「IndentationError」表示縮進錯誤,遇到的類型有下面幾個:python
Indentation Error: expected an indented block Indentation Error: unexpected indent Indentation Error: unindent does not match any outer indentation level
解決的辦法大都是在出現錯誤的那一行,按Tab或空格(但不能混用)鍵縮進便可。函數
「Index Error」表示索引錯誤,遇到的類型有以下:編碼
IndexError: array index out of range
"KeyError:"使用dict[key]時出現的錯誤,出現這種狀況,最好使用dict.get(key)來檢查dict中是否含有目標值,若是返回none的話,就是沒有目標鍵的值。命令行
"TypeError"遇到的狀況以下:code
TypeError:'unicode' object is not callable
出現這樣的報錯,是程序將字符串看成函數使用了。索引
「UnicodeEncodeError」說明編碼有問題ci
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1:
字符串在Python內部的表示是unicode編碼,所以,在作編碼轉換時,一般須要以unicode做爲中間編碼,即先將其餘編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另外一種編碼。unicode
Decode的做用是將其餘編碼的字符串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字符串str1轉換成unicode編碼。字符串
Encode的做用是將unicode編碼轉換成其餘編碼的字符串,如str2.encode('gb2312'),表示將unicode編碼的字符串str2轉換成gb2312編碼。get
所以,轉碼的時候必定要先搞明白,字符串str是什麼編碼,而後decode成unicode,而後再encode成其餘編碼
代碼中字符串的默認編碼與代碼文件自己的編碼一致。
python在安裝時,默認的編碼是ascii,當程序中出現非ascii編碼時,python的處理經常會報這樣的錯UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python沒辦法處理非ascii編碼的,此時須要本身設置將python的默認編碼,通常設置爲utf8的編碼格式。
解決方法有三中: 1.在命令行修改,僅本會話有效: 1)經過>>>sys.getdefaultencoding()查看當前編碼(若報錯,先執行>>>import sys >>>reload(sys)); 2)經過>>>sys.setdefaultencoding('utf8')設置編碼 2.較繁瑣,最有效 1)在程序文件中如下三句
import sys reload(sys) sys.setdefaultencoding('utf8')
3.修改Python本環境(推薦) 在Python的Lib\site-packages文件夾下新建一個sitecustomize.py文件,內容爲:
#coding=utf8 import sys reload(sys) sys.setdefaultencoding('utf8')
重啓Python解釋器,發現編碼已被設置爲utf8,與方案二同效;這是由於系統在Python啓動的時候,自行調用該文件,設置系統的默認編碼,而不須要每次都手動加上解決代碼,屬於一勞永逸的解決方法。 值得說明的是,對於str和unicode之間的轉換:
str--->unicode: str.decode(編碼格式) unicode-->str: unicode.encode(編碼格式)