我正在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
文件基本上由带有值True
或False
写入其中的单个字符串组成。这种安排看起来很复杂,因为这是来自更大代码的最小示例,这也是我将参数读入其中的方式。
为什么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条件中使用或用作以下布尔运算的操作数。以下值为“假”:
- …
- 任何数值类型的零,例如
0
,0L
,0.0
,0j
。- 任何空序列,例如
''
,()
,[]
。- …
所有其他值都被认为是真实的-因此许多类型的对象总是真实的。
内置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
我发现了这个语法: 这个有两个点的语法是什么:叫? 在哪里可以找到有关它的信息? 它是仅适用于布尔值还是以其他不同的方式实现?
如何将bool in的输出从1和0转换为字符串,例如True或False。
在Java8上使用Apache CXF 2.7.11实现的一些Java first SOAP服务有一个问题。当TRUE作为值传递时,值将变为null。当true以小写形式传递时,同样的方法也能很好地工作。 我看到另一个线程,其中类扩展以及解决了这个问题,但是生成的WSDL类型已经从xs:boolean更改为xs:string。这意味着使用者应将布尔值作为字符串传递。这在我的情况下是不能接受的。 J
我有以下typescript代码: 将strictNullChecks设置为false。 生成的类型是
问题内容: 我有一个pojo类,其中标志之一是Boolean类型。 当此属性获取非布尔值(不是fastxml时)时,杰克逊会自动将输入值转换为。调试了几个小时后,我发现这是在setter方法中发生的。 如果此属性的输入值为非布尔值,我想传递自定义消息。我已经编写了自己的注释来验证此属性的输入值,并返回自定义消息(如果它不是布尔值,但是杰克逊在检查自定义验证器之前将其绑定)。 使用杰克逊版本>>>
但是这个代码不起作用。编译器说 我在试图理解代码的问题是什么。我认为将返回一个布尔值流,我可以通过收集这些值。