如何引用格式字符串语法中的空字符串键?
How to reference the empty string key in the Format String Syntax?
空字符串 (''
) 是一个完全有效的字典键,但我无法使用 Format String Syntax
引用它
data = { 'a' : 'hello' , '' : 'bye' }
print '{a:<14s}'.format(**data)
print '{:<14s}'.format(**data)
输出:
hello
Traceback (most recent call last):
File "xxx.py", line 3, in <module>
print '{:<14s}'.format(**data)
IndexError: tuple index out of range
有什么方法可以引用该键...作为字典键!我无法将数据转换为元组;一些背景知识:我正在根据通用格式规范进行一些自动格式化,该规范使用字典作为格式化数据转换为 Format String Syntax
。也就是说,我不能这样做:
print '{0:<14s}'.format(data[''])
必须始终将数据传递给格式为 **data
(基本上,因为我在格式化程序 class 中执行通用 .format(**data)
)
不能使用空字符串。该格式严格限制键为 有效 Python 标识符,这意味着它们必须至少有 1 个字母或下划线开头。
来自Format String Syntax documentation中的语法:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
arg_name ::= [identifier | integer]
所以 field_name
要么是整数要么是 valid Python identifier。
请注意,空字符串并不是唯一不是有效标识符的字符串;您不能使用其中包含空格的字符串,也不能使用以数字开头的字符串。这样的字符串可以在字典中使用,只是不能作为 Python 代码中的关键字参数,也不能作为字符串格式中的字段名称。
'arg_name' 可以是一个标识符,因此您可以将空字符串分配给一个变量并将其用作字典中的键。此示例假定按下 RETURN 键以生成用于比较的空字符串:
empty = ''
test = {
"notso" : "You pressed some other key",
empty: "You pressed the RETURN key"
}
char = input("Press the RETURN key: ")
print(test[empty]) if char == empty else print(test["notso"])
空字符串 (''
) 是一个完全有效的字典键,但我无法使用 Format String Syntax
data = { 'a' : 'hello' , '' : 'bye' }
print '{a:<14s}'.format(**data)
print '{:<14s}'.format(**data)
输出:
hello
Traceback (most recent call last):
File "xxx.py", line 3, in <module>
print '{:<14s}'.format(**data)
IndexError: tuple index out of range
有什么方法可以引用该键...作为字典键!我无法将数据转换为元组;一些背景知识:我正在根据通用格式规范进行一些自动格式化,该规范使用字典作为格式化数据转换为 Format String Syntax
。也就是说,我不能这样做:
print '{0:<14s}'.format(data[''])
必须始终将数据传递给格式为 **data
(基本上,因为我在格式化程序 class 中执行通用 .format(**data)
)
不能使用空字符串。该格式严格限制键为 有效 Python 标识符,这意味着它们必须至少有 1 个字母或下划线开头。
来自Format String Syntax documentation中的语法:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
arg_name ::= [identifier | integer]
所以 field_name
要么是整数要么是 valid Python identifier。
请注意,空字符串并不是唯一不是有效标识符的字符串;您不能使用其中包含空格的字符串,也不能使用以数字开头的字符串。这样的字符串可以在字典中使用,只是不能作为 Python 代码中的关键字参数,也不能作为字符串格式中的字段名称。
'arg_name' 可以是一个标识符,因此您可以将空字符串分配给一个变量并将其用作字典中的键。此示例假定按下 RETURN 键以生成用于比较的空字符串:
empty = ''
test = {
"notso" : "You pressed some other key",
empty: "You pressed the RETURN key"
}
char = input("Press the RETURN key: ")
print(test[empty]) if char == empty else print(test["notso"])