python - 值不正确的 Python 字符串格式
问题描述
我有一个要格式化的字符串,但我用来格式化的值可能是也可能不是正确的值(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}"
但由于我没有使用字典作为值,我认为这个解决方案不适合我。
解决方案
您可以编写自己的格式化程序并覆盖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
推荐阅读
- matlab - 保存 10x1 线图
- c++ - COM DLL 中的 C++ 调用函数可能存在内存泄漏
- java - 如何告诉spring从外部文件夹加载资源?
- android - 如何将 Post Layout Effect 应用到 ConstraintLayout 2.0
- c# - 如何从我的 WPF 中的任何应用程序访问突出显示/选定的文本?
- can-bus - 响应“50”仅对诊断请求“10 02”切换到编程会话意味着什么?
- forms - 无法设置提交按钮
- spring - HibernateException:使用 DefaultSchemaNameResolver 需要 Dialect 提供正确的 SQL 语句/命令
- php - 存储时关系上的 Laravel 5.0 sync() 不起作用
- python - 如何在 python/selenium 中切换 iframe 工作?