在python中有没有办法,当你做
时foo = "foo"
bar = None
"{} {}".format(foo, bar)
它不打印无值作为bar的值吗?
即。它应该导致"foo "
而不是"foo None"
答案 0 :(得分:7)
如果要为变量分配None
,则必须设置某种条件来控制所需的输出。这是一个简单的例子:
"{} {}".format(foo, "" if bar is None else bar)
另一种看待上述行为方式相同的方式,就是这样写:
"{} {}".format(foo, bar if bar is not None else "")
答案 1 :(得分:1)
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和地图功能。它只相当于说
"{} {}".format(none_to_empty(foo), none_to_empty(bar))
这看起来并不漂亮,因为你可能需要花费很多时间重复none_to_empty
。但是none_to_empty
也可以直接使用,如果您只想将其应用于某些参数,但让None
出现在其他参数中,例如:
"{} {}".format(foo, none_to_empty(bar))
仍然比每个"" if bar is None else bar
bar
更好。
答案 2 :(得分:-6)
我认为没有办法自动完成,你可以这样做:
"{} {}".format(foo, bar or "")