f"..."
将表达式结果插入到一个表达式中时,字符串非常有用literal,但你没有文字,你有一个单独的变量中的模板字符串。
您可以使用str.format()将值应用于该模板:
name=["deep","mahesh","nirbhay"]
user_input = "certi_{element}" # this string i ask from user
for value in name:
print(user_input.format(element=value))
使用名称的字符串格式化占位符(例如{element}
) 不是变量。您可以为关键字参数中的每个名称分配一个值str.format()
打电话代替。在上面的例子中,element=value
传入的值value
变量来填充占位符element
.
Unlike f
- 字符串,{...}
占位符是not表达式,并且您不能在模板中使用任意 Python 表达式。这是一件好事,您不会希望最终用户能够在您的程序中执行任意 Python 代码。请参阅格式化字符串语法文档了解详情。
您可以传入任意数量的名称;字符串模板没有have使用其中任何一个。如果你结合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()
and globals()
要生成将变量名称映射到值的字典,我不推荐这种方法。使用如上所述的专用命名空间来限制可用的名称,并为最终用户记录这些名称。