问题描述
python中有没有一种方法可以做到
foo = "foo"
bar = None
"{} {}".format(foo, bar)
它不会打印None作为bar的值?
即。
它应该导致"foo "
而不是"foo None"
1楼
如果您为变量分配了None
,则必须围绕控制所需的输出设置某种条件。
这是一个简单的示例:
"{} {}".format(foo, "" if bar is None else bar)
观察上述内容的另一种方式也是如此,也以这种方式编写:
"{} {}".format(foo, bar if bar is not None else "")
2楼
def none_to_empty(s):
return "" if s is None else s
def format_without_nones(format_string, *args):
return format_string.format(*map(none_to_empty, args))
format_without_nones("{} {}", foo, bar)
如果您不了解format_without_nones
工作原理,请查找varargs和map函数。
就是说
"{} {}".format(none_to_empty(foo), none_to_empty(bar))
看起来不太漂亮,因为您可能不得不重复很多次none_to_empty
。
但是,如果只想将none_to_empty
应用于某些参数,而让None
对其他参数显示,也可以直接使用none_to_empty
,例如:
"{} {}".format(foo, none_to_empty(bar))
"" if bar is None else bar
每一个bar
"" if bar is None else bar
, "" if bar is None else bar
它比拥有"" if bar is None else bar
更好。
3楼
我认为没有办法自动执行此操作,您可以执行以下操作:
"{} {}".format(foo, bar or "")