在python中我們都知道可以用
try:
pass
except:
pass
來捕獲異常,比如
data={}
try:
print(data['key'])
except exception as e:
print(e)
print(data['key'])
直接列印data[『key』]會報keyerror這個錯誤,但是用try except可以避免python報錯,但是,這並不是我們想要的,假如我們想提取這個字典資料時,以key來提取,沒有key的話,建立乙個預設值,這樣不就好了,那我們該怎麼做呢?
這就用到了異常值返回的相關函式。首先我們看看沒有try except這種方式呼叫時返回的結果,是***keyerror: 『key』***,而有try except返回的是***『key』***,那麼我們直接用第二種方式的返回值建立字典的鍵值不就好了嗎?如下:
data=
try:
print
(data[
'key'])
except exception as e:
data[e]
='--'
print
(data)
好像這樣就在空字典中建立了key為鍵,』–'為值的鍵值對,但是我們列印結果,發現卻不是這樣的,列印的結果為
,
這並不是我們想要的,說明上面try except返回的值***key***並不是exception的所有資料,而***keyerror(『key』)***才是exception中的所有資料,為了正是我們的判斷,我們可以用下面兩種方法來判斷:
1. str(e)
返回字串型別,只給出異常資訊,不包括異常資訊的型別,如1/0的異常資訊
'integer division or modulo by zero'
2. repr(e)
給出較全的異常資訊,包括異常資訊的型別,如1/0的異常資訊
"zerodivisionerror('integer division or modulo by zero',)"
而剛好,我們需要需要列印出錯誤的異常資訊,並將其作為鍵,所以,我們可以用re正規表示式提取到我們想要的key,**如下:
import re
data=
try:
print
(data[
'key'])
except exception as e:
data[e]
='--'
print
(data)
a=repr
(e) data[re.findall(
"'(.*?)'"
,a)[0]
]='***'
print
(data)
列印結果如下:
即,我們實現了當字典沒有key時,建立乙個預設值,存進字典裡! Python 異常值分析
import pandas as pd catering sale data2.xls 餐飲資料 data pd.read excel catering sale,index col u 日期 讀取資料,指定 日期 列為索引列 import matplotlib.pyplot as plt 匯入影象...
python異常捕獲 如何捕獲Python中的異常
python 提供了try except語句捕獲並處理異常,該異常處理語句的基本語法結構如下 try 可能產生異常的 塊 except error1,error2,as e 處理異常的 塊1 except error3,error4,as e 處理異常的 塊2該格式中,括起來的部分可以使用,也可以省...
python異常捕獲
python的異常處理如c c 的結構一樣。python用try.except.c c 則用try.catch.並不難理解。在對具體錯誤的獲取則有點不同,主要是語法的差異上。c 在catch後可生成相應乙個異常的類,然後可通過類物件獲取相關的錯誤資訊。而python則不同,它在獲取錯誤資訊有點奇怪,...