dan*_*ast 5 python string-formatting
空字符串('')是字典的完全有效键,但是我无法使用格式字符串语法来引用它
data = { 'a' : 'hello' , '' : 'bye' }
print '{a:<14s}'.format(**data)
print '{:<14s}'.format(**data)
Run Code Online (Sandbox Code Playgroud)
哪个输出:
hello
Traceback (most recent call last):
File "xxx.py", line 3, in <module>
print '{:<14s}'.format(**data)
IndexError: tuple index out of range
Run Code Online (Sandbox Code Playgroud)
有什么办法可以将该键引用为字典键!我无法将数据转换为元组;有点背景:我正在基于通用格式规范进行一些自动格式化,该规范被转换为Format String Syntax使用dict作为格式化数据。也就是说,我不能这样做:
print '{0:<14s}'.format(data[''])
Run Code Online (Sandbox Code Playgroud)
数据必须始终按以下格式传递**data(基本上,因为我.format(**data)在格式化程序类中进行了泛型处理)
您不能使用空字符串。格式严格限制键只能使用有效的Python标识符,这意味着它们必须在开始处至少包含1个字母或下划线。
从“ 格式字符串语法”文档中的语法中:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
arg_name ::= [identifier | integer]
Run Code Online (Sandbox Code Playgroud)
因此,field_name要么是整数,要么是有效的Python标识符。
注意,空字符串并不是唯一不是有效标识符的字符串。您既不能使用带空格的字符串,也不能使用以数字开头的字符串。这样的字符串可以在字典中使用,不仅不能用作Python代码中的关键字参数,也不能用作字符串格式的字段名称。
| 归档时间: |
|
| 查看次数: |
1967 次 |
| 最近记录: |