亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Python中將bool的字符串表示形式解析為bool?

如何在Python中將bool的字符串表示形式解析為bool?

犯罪嫌疑人X 2023-11-09 21:44:13
我需要的場景:用戶輸入True或False,默認解析為str。我無法更改解析類型,因為 python 3+ 解析為 str (使用 Python 3.8) 因此,當我解析時,bool(input('Enter True or False'))它會返回True,因為默認 bool 函數僅False在存在空字符串時返回。True否則。我有一個我需要的 json 。它有以下表示:list_of_visits ='''{"Museum": "True","Library": "True","Park": "False"}'''請注意,如果沒有引用,我無法將其表示為:list_of_visits ='''{"Museum": True,"Library": True,"Park": False}'''原因解析如下會引發錯誤:jsonic = json.loads(list_of_visits)jsonic但我在某些地方還需要從 int 和 float 進行解析,并且我無法單獨為每種類型編寫函數。我正在嘗試構建一個一站式解決方案,它可能繼承 bool() 的功能并執行此轉換,我可以在任何地方使用它,即解決方案不僅可以執行傳統的 bool() 操作,而且還能夠解析字符串表示形式。目前我執行以下步驟:if type(value) == str and value =='True':    reprs = Trueelif type(value) == str and value =='False':    reprs = Falseelse:    reprs = bool(value)
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

您可以定義自己的函數,該函數可以在所有場景中工作,如下所示:


def get_bool(key):

    return value if value := {'True':True, 'False':False}.get(key) else bool(key)

    

對于單個值(例如輸入),您可以將其解析為:

get_bool('False')

返回:False


對于這樣的 json,你可能會這樣做:

from toolz.dicttoolz import valmap

valmap(get_bool, jsonic)

返回:


{'Museum': 1, 'Library': 1, 'Park': 0}

    

對于 3.7 及更低版本:

自從 python 3.8 中出現以來,我就愛上了 walrus 運算符。任何尋找較低版本的人可能需要一些重復:


def get_bool(key):

return {'True':True, 'False':False}.get(key) if  key.title() in {'True':True, 'False':False}.keys() else bool(key)

請注意,雖然它確實適用于每種情況,但您的 JSON 表示是錯誤的。JSON 可以具有布爾值,JSON 的字符串表示形式也可以。但是你必須使用 javascript 語法 astrue和false而不是 Python 的True& False。由于 JSON 是一種 JavaScript 表示法。


查看完整回答
反對 回復 2023-11-09
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號