如何在Python中将字符串转换为布尔值?这个尝试返回True:
>>> bool("False")
True
如何在Python中将字符串转换为布尔值?这个尝试返回True:
>>> bool("False")
True
当前回答
def str2bool(str):
if isinstance(str, basestring) and str.lower() in ['0','false','no']:
return False
else:
return bool(str)
想法:检查你是否希望字符串被计算为False;否则bool()对于任何非空字符串返回True。
其他回答
实际上,你只是将字符串与你期望接受的表示true的字符串进行比较,所以你可以这样做:
s == 'True'
或者检查一大堆值:
s.lower() in ['true', '1', 't', 'y', 'yes', 'yeah', 'yup', 'certainly', 'uh-huh']
使用以下物品时请谨慎:
>>> bool("foo")
True
>>> bool("")
False
空字符串的值是False,但其他的值都是True。所以这个不应该用于任何解析目的。
pydantic有一个优雅的解决方案:
import pydantic
>>> pydantic.parse_obj_as(bool, "true")
True
使用这个解决方案:
def to_bool(value) -> bool:
if value == 'true':
return True
elif value == 'True':
return True
elif value == 'false':
return False
elif value == 'False':
return False
elif value == 0:
return False
elif value == 1:
return True
else:
raise ValueError("Value was not recognized as a valid Boolean.")
通过使用下面的简单逻辑,你可以将一个字符串转换为布尔值,比如a = 'true'或'false'。
a = a.lower() == 'true'
如果a= = 'true'则设置a= true,如果a= = 'false'则设置a= false。
你可以这样做
my_string = "false"
val = (my_string == "true")
parens中的位将计算为False。这是另一种不需要进行实际函数调用的方法。