f"..."
将表达式结果插入文字时,字符串很棒,但是您没有文字,您在单独的变量中有一个模板字符串。
您可以使用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
。
与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()
andglobals()
生成将变量名称映射到值的字典,但我不推荐这种方法。使用像上面这样的专用命名空间来限制可用的名称,并为您的最终用户记录这些名称。