当前位置: 首页 > 面试题库 >

从文件读取的True / False值转换为布尔值

亢建白
2023-03-14
问题内容

我正在True - False从文件中读取一个值,我需要将其转换为布尔值。当前,True即使将值设置为,它也始终将其转换为False

MWE是我正在尝试做的事情:

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文件基本上由带有值TrueFalse写入其中的单个字符串组成。这种安排看起来很复杂,因为这是来自更大代码的最小示例,这也是我将参数读入其中的方式。

为什么flag总是转换为True


问题答案:

bool('True')并且bool('False')总是返回,True因为字符串’True’和’False’不为空。

引用伟人(和Python文档):

[5.1。真值测试](https://docs.python.org/2/library/stdtypes.html#truth-value-

testing)

可以测试任何对象的真值,以在if或while条件中使用或用作以下布尔运算的操作数。以下值为“假”:

  • 任何数值类型的零,例如00L0.00j
  • 任何空序列,例如''()[]


所有其他值都被认为是真实的-因此许多类型的对象总是真实的。

内置bool功能使用标准的真相测试程序。这就是为什么你总是得到True

要将字符串转换为布尔值,您需要执行以下操作:

def str_to_bool(s):
    if s == 'True':
         return True
    elif s == 'False':
         return False
    else:
         raise ValueError # evil ValueError that doesn't tell you what the wrong value was


 类似资料: