< p >
f"..."
字符串适用于将表达式结果插入文字字面量中,但您没有文字字面量,而是在单独的变量中使用模板字符串。
您可以使用 str.format()
将值应用于该模板:
name=["deep","mahesh","nirbhay"]
user_input = "certi_{element}"
for value in name:
print(user_input.format(element=value))
使用名称作为占位符(例如{element}
)的字符串格式化占位符不是变量。您需要在str.format()
函数的关键字参数中为每个名称分配一个值来填充占位符。在上面的示例中,element=value
将value
变量的值传递给占位符中的element
。
与f
-strings不同,{...}
占位符不是表达式,您不能在模板中使用任意Python表达式。这是件好事情,因为您不希望终端用户能够在您的程序中执行任意Python代码。有关详细信息,请参阅格式化字符串语法文档。
您可以传递任意数量的名称;字符串模板不一定要使用其中任何一个。如果将str.format()
与**mapping
调用约定结合使用,则可以使用任何字典作为值的来源:
template_values = {
'name': 'Ford Prefect',
'number': 42,
'company': 'Sirius Cybernetics Corporation',
'element': 'Improbability Drive',
}
print(user_input.format(**template_values)
上述方法允许用户在模板中使用template_values
中的任意名称,可以使用任意次数。
虽然您可以使用locals()
和globals()
生成将变量名称映射到值的字典,但我不建议使用该方法。请使用像上面示例中的专用命名空间来限制可用名称,并为最终用户记录这些名称。
str.format()
完全足够。 - Martijn Pieters