python 異常值捕獲

2021-10-10 01:27:20 字數 1613 閱讀 2306

在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則不同,它在獲取錯誤資訊有點奇怪,...