使字符串格式忽略'None'



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 "")

最新更新