布尔值转换为小写字符串

19

str.format()方法能否打印布尔值参数而不是大写字符串?

我不能将str(myVar).lower()作为格式化参数,因为当myVar不是布尔值时,我想保留字母的大小写。

请不要提供使用变量值进行条件检查的解决方案。

我只关心是否有可能编写以下内容:

"Bla bla bla {}".format(myVar)

myVar == True 时,输出变为 "Bla bla bla true",而当 myVar == false 时,输出变为 "Bla bla bla false"


1
你想要小写的布尔值有特定的原因吗?比如说,这与JSON相关吗? - jonrsharpe
3
不,str.format()不会改变布尔值的大小写,您需要手动更改。您为什么需要这个? - Martijn Pieters
if mybool: str = 'true' else: str = 'false' - Unihedron
1
@Unihedron:'true'如果mybool为真,否则为'false'赋值给boolval。或者只需使用'str(mybool)。lower()'。 - Martijn Pieters
2
"ftarlusee"[myVar::2] 对于额外的乐趣 :) - John La Rooy
显示剩余2条评论
2个回答

18

你可以使用类似这样的表达式

str(myVar).lower() if type(myVar) is bool else myVar

4
即使bool不能进一步被子类化,isinstance(myVar, bool)是首选。 - Martijn Pieters
str(myVar).lower() if isinstance(myVar, bool) else myVar - hitautodestruct

3

尝试使用可调用的lambda:

>>> f = lambda x: str(x).lower() if isinstance(x, bool) else  x
>>> 'foo {} {}'.format(f(True), f('HELLO'))
'foo true HELLO'

2
根据PEP8的建议,最好使用def f(x): return str(x).lower() if isinstance(x, bool) else x代替lambda https://www.python.org/dev/peps/pep-0008/#programming-recommendations - Touk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接