值不正确的Python字符串格式
我有一个字符串,我想格式化,但是我用来格式化的值可能是正确的值,也可能不是正确的值,或者没有。在任何情况下,如果传递了其中一个不正确的值,我仍然希望格式化字符串,但忽略任何不起作用的值。例如:值不正确的Python字符串格式,python,python-3.x,Python,Python 3.x,我有一个字符串,我想格式化,但是我用来格式化的值可能是正确的值,也可能不是正确的值,或者没有。在任何情况下,如果传递了其中一个不正确的值,我仍然希望格式化字符串,但忽略任何不起作用的值。例如: mystring = "{:02d}:{:02d}" mystring.format('', 1) 在本例中,我希望我的输出为:01,从而否定了字符串中第一个值不起作用的事实。我看着像这样的东西 class Default(dict): def __missing__(self, key):
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}"
但是,由于我没有使用字典来查找值,我认为这个解决方案对我不起作用。您可以尝试一下,但要检查每个值是否有效:
out = []
for v in ['', 1]:
# Check if v can be converted to a decimal number
try:
out.append(format(v, '02d'))
except (ValueError, TypeError):
out.append('')
print(':'.join(out)) # -> :01
您可以使用try-except检查每个值是否有效:
out = []
for v in ['', 1]:
# Check if v can be converted to a decimal number
try:
out.append(format(v, '02d'))
except (ValueError, TypeError):
out.append('')
print(':'.join(out)) # -> :01
您可以编写自己的格式化程序并重写以捕获这些错误,只返回空字符串。以下是您可能希望编辑以仅捕获某些错误的基本信息:
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
您可以编写自己的格式化程序并重写以捕获这些错误,只返回空字符串。以下是您可能希望编辑以仅捕获某些错误的基本信息:
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
除了在return语句中,还有什么方法可以合并其他值吗?例如,可选参数。例如,如果我想返回missing:01而不是空白字符串?@AGH_如果在except块中返回'missing',则会得到missing:01。如果这对你不起作用?我想会的,但它不起作用。我在return语句中返回的format_field函数中添加了一个可选参数,但是,它似乎只是跳过了它。我仍然返回:01。我应该指定,我向函数添加了可选参数,并且return语句正在返回该参数。这是不起作用的部分。除了在return语句中,还有什么方法可以合并其他值吗?例如,可选参数。例如,如果我想返回missing:01而不是空白字符串?@AGH_如果在except块中返回'missing',则会得到missing:01。如果这对你不起作用?我想会的,但它不起作用。我在return语句中返回的format_field函数中添加了一个可选参数,但是,它似乎只是跳过了它。我仍然返回:01。我应该指定,我向函数添加了可选参数,并且return语句正在返回该参数。那是不起作用的部分。