我有一个要格式化的字符串,但是我用来格式化的值可能是也可能不是正确的值(None
或''
)。无论如何,如果传递了这些不正确的值之一,我仍然希望字符串格式化,但忽略任何无效的值。例如:
mystring = "{:02d}:{:02d}"
mystring.format('', 1)
在这种情况下,我希望我的输出为:01
,从而消除了''
不适用于字符串中的第一个值的事实。我看着
class Default(dict):
def __missing__(self, key):
return key.join("{}")
d = Default({"foo": "name"})
print("My {foo} is {bar}".format_map(d)) # "My name is {bar}"
但是由于我不使用值的字典,所以我认为该解决方案对我不起作用。
答案 0 :(得分:3)
您可以编写自己的格式化程序并覆盖format_field()
来捕获这些错误,并仅返回空字符串。这是基础知识(您可能需要编辑以仅捕获某些错误):
import string
class myFormat(string.Formatter):
def format_field(self, value, format_spec):
try:
return super().format_field(value, format_spec)
except ValueError:
return ''
fmt = myFormat()
mystring = "{:02d}:{:02d}"
print(fmt.format(mystring, *(2, 1)))
# 02:01
print(fmt.format(mystring, *('', 1)))
# :01
答案 1 :(得分:0)
您可以使用try-except来检查每个值是否有效:
LocalizedStringKey.StringInterpolation