formatutils
- str.format()
工具箱¶
PEP 3101 介绍了 str.format()
方法,以及后来称为“新样式”的字符串格式化。为了明确正确起见,最好将Python的双重字符串格式化功能引用为 bracket-style 和 percent-style 。有重叠,但其中一个不会取代另一个。
括号样式更可插拔,速度更慢,并且使用一种方法。
Percent样式更简单、更快,并且使用运算符。
括号样式的格式化带来了一个功能更强大的工具箱,但它远远不是一个完整的工具箱。 str.format()
用途 more powerful syntax ,但 the tools and idioms 使用这种语法的人并不是很发达,也没有得到很好的宣传。
formatutils
添加了几个用于处理方括号样式格式字符串的函数:
DeferredValue
:将取值或计算值推迟到格式化时间。
get_format_args()
:从格式字符串中解析位置参数和关键字参数。
tokenize_format_str()
:将格式字符串标记化为文字和BaseFormatField
物体。
construct_format_field_str()
:协助以编程方式构建格式字符串。
infer_positional_format_args()
:将2.7+格式字符串中的匿名引用转换为适合在Python2.6中使用的显式位置参数。
- class boltons.formatutils.BaseFormatField(fname, fspec='', conv=None)[源代码]¶
一个类,表示对括号样式格式字符串中的参数的引用。例如,在
"{greeting}, world!"
,有一个名为“问候”的字段。这些字段可以应用许多选项。请参阅上的Python文档 Format String Syntax 有关详细信息,请参阅。
- property fstr¶
以字符串格式表示的字段的当前状态。
- class boltons.formatutils.DeferredValue(func, cache_value=True)[源代码]¶
DeferredValue
是一种包装器类型,用于推迟计算值,否则字符串和格式化成本很高。这在诸如日志记录之类的领域中最有价值,在这种情况下,用户不想浪费时间格式化日志消息的值,该值随后将被过滤,因为消息的日志级别是调试的,并且记录器被设置为只发出关键消息。这个 :class:
DeferredValue` 使用不带参数的Callable初始化`并返回值,该值可以是任何类型。默认情况下,DeferredValue只调用该可调用一次,以后的引用将获得一个缓存值。可以通过设置禁用此行为 *cache_value* 至 ``False
。- 参数:
func (function) -- 不接受参数并计算所表示的值的可调用函数。
cache_value (bool) -- 后续用法是否会调用 func 再来一次。默认为
True
。
>>> import sys >>> dv = DeferredValue(lambda: len(sys._current_frames())) >>> output = "works great in all {0} threads!".format(dv)
提示:要使行数更短,请使用:
from formatutils import DeferredValue as DV
- boltons.formatutils.construct_format_field_str(fname, fspec, conv)[源代码]¶
根据字段名、规范和转换字符构造格式字段字符串 (
fname
,fspec
,conv
)。有关更多信息,请参见Python字符串格式化。
- boltons.formatutils.get_format_args(fstr)[源代码]¶
将格式字符串转换为格式字符串引用的两个参数列表。一个是位置参数,另一个是命名参数。该列表的每个元素都包括该字段的名称和名义类型。
# >>> get_format_args("{noun} is {1:d} years old{punct}") # ([(1, <type 'int'>)], [('noun', <type 'str'>), ('punct', <type 'str'>)])
# XXX: Py3k >>> get_format_args("{noun} is {1:d} years old{punct}") == ([(1, int)], [('noun', str), ('punct', str)]) True
- boltons.formatutils.infer_positional_format_args(fstr)[源代码]¶
获取带有匿名位置参数的格式字符串(例如,“{}”和{:D}),并将它们转换为数字字符串,以便显式显示并与2.6兼容。
返回带有推断的位置参数的字符串。
- boltons.formatutils.tokenize_format_str(fstr, resolve_pos=True)[源代码]¶
获取格式字符串,将其转换为交替字符串文字的列表,然后
BaseFormatField
代币。默认情况下,还会将匿名位置参照推断为带编号的显式位置参照。禁用此行为集 resolve_pos 至False
。