Python eval()報錯NameError: name ‘null’ is not defined的解決方法

eval()介紹

eval()函數(shù)十分強大,官方demo解釋為:將字符串str當(dāng)成有效的表達式來求值并返回計算結(jié)果。
它可以把list,tuple,dict和string相互轉(zhuǎn)化。
在接口自動化中經(jīng)常用到。
比如啊,我們把測試數(shù)據(jù)寫成數(shù)組的格式存放于excle表中,當(dāng)讀取出來時就是str格式,此時用eval,就可以把取到的值轉(zhuǎn)換為正常的數(shù)組或者字典的格式了。

NameError: name ‘null’ is not defined是怎么出現(xiàn)的

a = "{"a":1,"b":2,"c":null}"
a = eval(a)
print(a)

在轉(zhuǎn)換的字符串中,存在null時,就會出現(xiàn)NameError: name ‘null’ is not defined這個錯誤。

解決方法

巧用 replace()方法。
將字符串中的null替換掉!

str = "{"a":1,"b":2,"c":null}"
str.replace("null", "123456")
a = eval(str)
print(a)

這樣子就能夠?qū)⒆址械膎ull替換掉了。就能夠正常的轉(zhuǎn)換了。

應(yīng)用場景

我為什么要這么做呢?
因為我在做自動化測試的時候,需要在數(shù)據(jù)庫中取出一個
[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]
這樣子格式的數(shù)據(jù)來和預(yù)期值做對比。
我的預(yù)期值只是a,所以我要在這個數(shù)據(jù)中,把a取出來。
所以就需要上述的這種操作了!

a = "[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]"
hlist = eval(a)

在這一步的時候因為有null存在,所以報錯。

a = "[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]"
a = a.replace("null", "123456")
hlist = eval(a)
testhope = 1
if testhope == hlist[0]["a"]:
    pass

這樣子就可以了,因為null被替換為了123456.

竟然還有這種操作!

為我的機智點個贊!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容