Python字符串格式的值不正确

时间:2020-04-17 15:12:26

标签: python python-3.x

我有一个要格式化的字符串,但是我用来格式化的值可能是也可能不是正确的值(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}"

但是由于我使用值的字典,所以我认为该解决方案对我不起作用。

2 个答案:

答案 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