Python 将字符串转换为f字符串

Python 将字符串转换为f字符串,python,python-3.x,string-interpolation,f-string,Python,Python 3.x,String Interpolation,F String,如何将经典字符串转换为f字符串 variable = 42 user_input = "The answer is {variable}" print(user_input) 输出:答案是{variable} 所需输出:答案是42f字符串是语法,而不是对象类型。不能将任意字符串转换为该语法,该语法会创建字符串对象,反之亦然 我假设您希望使用user\u输入作为模板,因此只需在user\u输入对象上使用: 如果要提供可配置的模板服务,请创建一个包含所有可插入字段的命名空间字典

如何将经典字符串转换为f字符串

variable = 42
user_input = "The answer is {variable}"
print(user_input)
输出:答案是{variable}

所需输出:答案是42

f字符串是语法,而不是对象类型。不能将任意字符串转换为该语法,该语法会创建字符串对象,反之亦然

我假设您希望使用user\u输入作为模板,因此只需在user\u输入对象上使用:

如果要提供可配置的模板服务,请创建一个包含所有可插入字段的命名空间字典,并使用str.format和**kwargs调用语法应用命名空间:

namespace = {'foo': 42, 'bar': 'spam, spam, spam, ham and eggs'}
formatted = user_input.format(**namespace)
然后,用户可以在{…}字段中使用命名空间中的任何键,或者不使用,未使用的字段将被忽略。

variable=42 user_input=答案是{variable} 为了得到答案是42,我们可以遵循这个方法 打印用户输入。formatvariable=变量 或

用户\输入\格式化=用户\输入。格式化变量=变量 打印用户\u输入\u格式
好链接

真正的答案可能是:不要这样做。通过将用户输入视为f字符串,您将其视为产生安全风险的代码。你必须确信你可以信任输入的来源

如果您知道用户输入是可信的,您可以通过以下方式进行操作:


编辑添加:@wjandrea指出了这一点的扩展。

只需添加一个类似的方法,如何实现同样的效果

variable = 42
user_input = "The answer is {variable}"
print(eval(f"f'{user_input}'"))

您可以使用f字符串而不是普通字符串

variable = 42
user_input = f"The answer is {variable}"
print(user_input) 

好的,我明白了。但这意味着我必须知道用户可以输入的所有值,事实并非如此:输入将是一个SQL查询,我无法真正知道用户将输入什么:从{table}中选择*,其中day={day}和client={client}。你知道在这种情况下我该怎么做吗?@fmalaussena:那么任意条目会给你什么值呢?您可以预先解析格式,并查看使用了什么fiednames,请参阅,下面是关于安全方面的扩展
variable = 42
user_input="The answer is {variable}"
eval("f'{}'".format(user_input))
'The answer is 42'
variable = 42
user_input = "The answer is {variable}"
print(eval(f"f'{user_input}'"))
variable = 42
user_input = f"The answer is {variable}"
print(user_input)