如何读取python字符串格式化语法?

时间:2016-02-05 04:39:11

标签: python string-formatting

python文档有关于formatting strings语法的信息,但是我似乎无法找到有关如何读取定义替换字段语法的表的信息。

replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*
arg_name          ::=  [identifier | integer]
attribute_name    ::=  identifier
element_index     ::=  integer | index_string
index_string      ::=  <any source character except "]"> +
conversion        ::=  "r" | "s" | "a"
format_spec       ::=  <described in the next section>

format specification section中还有一个类似的表格。

我理解表格的一部分,如::=分隔定义和定义,引号内的字符是文字​​,|表示“或”,但表格的其余部分逃脱了我。

1 个答案:

答案 0 :(得分:2)

这种格式就是所谓的Backus-Naur形式。 More information found on BNF here.基本上,BNF是一组推导规则。

定义符号:

  • &lt;,&gt;中关闭的元符号:: =,|和类名以外的任何内容是被定义语言的符号(例如,这个Python示例)
  • 元符号:: =将被解释为“被定义为”
  • |用于分隔替代定义,并被解释为“或”
  • 元符号&lt;,&gt;是包含类名的分隔符。

一点点剖析这个例子让你开始:

replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*

replacement_field由可选field_name,可选conversion和可选format_spec组成。括号([和])表示可选参数

如果您确实将field_name传递给replacement_field,则其中包含arg_name函数,您可以在其中传递attribute_name {{1 }}。注意element_index是必需的,因为括号在引号中,因此转义为可选的BNF表单。