formatutils - str.format() 工具箱

PEP 3101 介绍了 str.format() 方法,以及后来称为“新样式”的字符串格式化。为了明确正确起见,最好将Python的双重字符串格式化功能引用为 bracket-stylepercent-style 。有重叠,但其中一个不会取代另一个。

  • 括号样式更可插拔,速度更慢,并且使用一种方法。

  • Percent样式更简单、更快,并且使用运算符。

括号样式的格式化带来了一个功能更强大的工具箱,但它远远不是一个完整的工具箱。 str.format() 用途 more powerful syntax ,但 the tools and idioms 使用这种语法的人并不是很发达,也没有得到很好的宣传。

formatutils 添加了几个用于处理方括号样式格式字符串的函数:

class boltons.formatutils.BaseFormatField(fname, fspec='', conv=None)[源代码]

一个类,表示对括号样式格式字符串中的参数的引用。例如,在 "{greeting}, world!" ,有一个名为“问候”的字段。

这些字段可以应用许多选项。请参阅上的Python文档 Format String Syntax 有关详细信息,请参阅。

property fstr

以字符串格式表示的字段的当前状态。

set_conv(conv)[源代码]

只有两个内置转换器: sr 。它们有些稀有,看起来很像 "{ref!r}"

set_fname(fname)[源代码]

设置字段名称。

set_fspec(fspec)[源代码]

设置字段规范。

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

get_value()[源代码]

计算、选择缓存并返回 func 。如果 get_value() 之前已调用过,则可能会根据 cache_value 传递给构造函数的选项。

boltons.formatutils.construct_format_field_str(fname, fspec, conv)[源代码]

根据字段名、规范和转换字符构造格式字段字符串 (fnamefspecconv )。有关更多信息,请参见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_posFalse