当前位置: 代码迷 >> python >> 使字符串格式忽略“无”
  详细解决方案

使字符串格式忽略“无”

热度:47   发布时间:2023-06-13 15:14:23.0

python中有没有一种方法可以做到

foo = "foo"
bar = None
"{} {}".format(foo, bar)

它不会打印None作为bar的值?

即。 它应该导致"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_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更好。

我认为没有办法自动执行此操作,您可以执行以下操作:

"{} {}".format(foo, bar or "")
  相关解决方案