如何阅读 python 字符串格式化语法?
How to read the python string formatting grammar?
python 文档有关于 formatting strings 语法的信息,但是我似乎找不到关于如何阅读定义替换字段语法的 table 的信息.
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中也有类似的table。
我理解 table 的部分内容,例如 ::=
分隔 definiendum 和 definien,引号内的字符是文字,而 |
表示 "or",但是table 的其余部分逃脱了我。
这种格式就是所谓的 Backus-Naur 格式。 More information found on BNF here. BNF基本上就是一套推导规则
定义符号:
- 除元符号 ::=、| 和 class 名称外,<,> 中的封闭名称都是所定义语言的符号(例如,此 Python 示例)
- 元符号 ::= 将被解释为 "is defined as"
- 的|用于分隔替代定义并解释为 "or"
- 元符号 <,> 是包含 class 名称的定界符。
稍微剖析此示例以帮助您入门:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
replacement_field
由可选的field_name
、可选的conversion
和可选的format_spec
组成。方括号([ 和 ]'s)表示 可选参数.
如果您确实将 field_name
传递给 replacement_field
,它包含一个 arg_name
函数,您可以在其中传递 attribute_name
或 element_index
。注意 element_index
是强制性的,因为括号在引号中,因此转义 BNF 形式为可选。
python 文档有关于 formatting strings 语法的信息,但是我似乎找不到关于如何阅读定义替换字段语法的 table 的信息.
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中也有类似的table。
我理解 table 的部分内容,例如 ::=
分隔 definiendum 和 definien,引号内的字符是文字,而 |
表示 "or",但是table 的其余部分逃脱了我。
这种格式就是所谓的 Backus-Naur 格式。 More information found on BNF here. BNF基本上就是一套推导规则
定义符号:
- 除元符号 ::=、| 和 class 名称外,<,> 中的封闭名称都是所定义语言的符号(例如,此 Python 示例)
- 元符号 ::= 将被解释为 "is defined as"
- 的|用于分隔替代定义并解释为 "or"
- 元符号 <,> 是包含 class 名称的定界符。
稍微剖析此示例以帮助您入门:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
replacement_field
由可选的field_name
、可选的conversion
和可选的format_spec
组成。方括号([ 和 ]'s)表示 可选参数.
如果您确实将 field_name
传递给 replacement_field
,它包含一个 arg_name
函数,您可以在其中传递 attribute_name
或 element_index
。注意 element_index
是强制性的,因为括号在引号中,因此转义 BNF 形式为可选。