python中有没有办法让你这样做
foo = "foo"
bar = None
"{} {}".format(foo, bar)
它不会打印 None 作为条形图的值?
即。它应该导致"foo "
而不是"foo None"
如果要将None
分配给变量,则必须围绕控制所需的输出设置某种条件。下面是一个简单的示例:
"{} {}".format(foo, "" if bar is None else bar)
另一种以同样方式看待上述内容的方式也是这样写的:
"{} {}".format(foo, bar if bar is not None else "")
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
其他参数显示,也可以直接使用none_to_empty
,例如:
"{} {}".format(foo, none_to_empty(bar))
这仍然比每个bar
都有"" if bar is None else bar
更好。
没有办法自动执行此操作,您可以这样做:
"{} {}".format(foo, bar or "")