簡體   English   中英

ValueError:以10為底的int()的無效文字:''發送空值時出現此錯誤

[英]ValueError: invalid literal for int() with base 10: '' I got this error when empty value was sent

我得到了ValueError: invalid literal for int() with base 10: ''錯誤。 我寫

def convert_json(request):
    json_body = json.loads(request.body)
    return json_body.get('ans', 0)

當我像發送JSON

{ "ans": "" }  

錯誤發生。我真的不明白為什么會發生此錯誤,因為我認為返回了0。在此json中,“”表示None,所以我認為應該返回0。但是我的代碼無法正常工作,我該如何解決呢?我應該怎么寫才能使系統更理想?

在Python中,即使字典中存在值, get()也會返回該值,即使該值是一個空字符串也是如此。

您可以通過在外殼程序中運行以下代碼來進行測試:

>>> json_body = {"ans": ""}  
>>> json_body.get('ans', 0)
''

如果要將空字符串轉換為0 ,則應在convert_json方法中執行此操作。

def convert_json(request):
    json_body = json.loads(request.body)
    ans = json_body.get('ans', 0)
    if ans == '':
        ans = 0
    return ans

您可以修改代碼以:

def convert_json(request):
    json_body = json.loads(request.body)
    return json_body.get('ans') and int(json_body.get('ans')) or 0

在較高的代碼中,如果ans類型不是數字,則ValeError提高。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM