如何在Python中将字符串转换为布尔值?这个尝试返回True:
>>> bool("False")
True
如何在Python中将字符串转换为布尔值?这个尝试返回True:
>>> bool("False")
True
当前回答
在python 3.10版本中,你可以这样做;
def stringToBool(string: str) -> bool:
match(string.lower()):
case 'true':
return True
case 'false':
return False
match-statement等价于c++中的switch。
其他回答
您可能已经有了一个解决方案,但对于其他人来说,他们正在寻找一种方法,将值转换为布尔值,使用“标准”假值,包括None,[],{}和“”,除了false, no和0。
def toBoolean( val ):
"""
Get the boolean value of the provided input.
If the value is a boolean return the value.
Otherwise check to see if the value is in
["false", "f", "no", "n", "none", "0", "[]", "{}", "" ]
and returns True if value is not in the list
"""
if val is True or val is False:
return val
falseItems = ["false", "f", "no", "n", "none", "0", "[]", "{}", "" ]
return not str( val ).strip().lower() in falseItems
如果你知道你的输入将是“True”或其他什么,那么为什么不使用:
def bool_convert(s):
return s == "True"
注意:如果eval()直接或间接接受用户的输入,请不要使用它,因为它很容易被滥用:
eval(“操作系统。系统(' rm -rf / ') ')
但干杯!研究还发现eval()并不是邪恶的,它完全可以用于可信代码。您可以使用它来将一个布尔字符串,如“False”和“True”转换为布尔类型。
我想分享我的简单解决方案:使用eval()。它将字符串True和False转换为适当的布尔类型,如果字符串的标题格式是True或False,总是第一个字母大写,否则该函数将引发一个错误。
e.g.
>>> eval('False')
False
>>> eval('True')
True
当然,对于动态变量,您可以简单地使用.title()来格式化布尔字符串。
>>> x = 'true'
>>> eval(x.title())
True
这将抛出一个错误。
>>> eval('true')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'true' is not defined
>>> eval('false')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'false' is not defined
我们可能需要捕捉'true'不区分大小写,如果是这样的话:
>>> x="TrUE"
>>> x.title() == 'True'
True
>>> x="false"
>>> x.title() == 'True'
False
还要注意,对于任何其他既不是真也不是假的输入,它将返回False
使用这个解决方案:
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.")