我正在从文件中读取一个True - False
值,需要将其转换为布尔值。当前,它总是将其转换为True
,即使该值设置为False
。
以下是我要做的一件事:
with open('file.dat', mode="r") as f:
for line in f:
reader = line.split()
# Convert to boolean <-- Not working?
flag = bool(reader[0])
if flag:
print 'flag == True'
else:
print 'flag == False'
file.dat
文件基本上由一个单独的字符串组成,其中的值是True
或False
。这种排列看起来非常复杂,因为这是一个非常大的代码的最小示例,这是我如何将参数读入其中的。
为什么flag
总是转换成True
?
你可以使用^{}
True
值是y
、yes
、t
、true
、on
和1
;False
值是n
、no
、f
、false
、off
和0
。如果val是其他值,则引发ValueError
。bool('True')
和bool('False')
始终返回True
,因为字符串'True'和'False'不是空的。引用一位伟人(和Python)的话:
内置的^{} 函数使用标准的真值测试过程。这就是为什么你总是得到
True
。要将字符串转换为布尔值,需要执行以下操作:
使用^{} :
在Python中,非空字符串始终为True。
相关:Truth Value Testing
如果NumPy是一个选项,那么:
相关问题 更多 >
编程相关推荐