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

eval()介紹

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

NameError: name ‘null’ is not defined是怎么出現的

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

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

解決方法

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

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

這樣子就能夠將字符串中的null替換掉了。就能夠正常的轉換了。

應用場景

我為什么要這么做呢?
因為我在做自動化測試的時候,需要在數據庫中取出一個
[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]
這樣子格式的數據來和預期值做對比。
我的預期值只是a,所以我要在這個數據中,把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.

竟然還有這種操作!

為我的機智點個贊!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容