Python 如何在变量初始化后生成字符串f-string?

Python 如何在变量初始化后生成字符串f-string?,python,python-3.x,string,formatting,format,Python,Python 3.x,String,Formatting,Format,假设我得到一些字符串并将其设置为变量-它不能创建为f-string: str1 = 'date time for {val1} and {val2}' 然后初始化字符串中的变量: val1 = 1 val2 = 77 调用print(str1)将返回'date-time for{val1}和{val2}'。但是我想 “1和77的日期时间” 是否有任何函数可以将字符串设置为F字符串?所以我想调用一些东西生成F(str1)并获取F-string PS我不能将dict{'val1':1,'val2

假设我得到一些字符串并将其设置为变量-它不能创建为f-string:

str1 = 'date time for {val1} and {val2}'
然后初始化字符串中的变量:

val1 = 1
val2 = 77
调用
print(str1)
将返回
'date-time for{val1}和{val2}'
。但是我想
“1和77的日期时间”

是否有任何函数可以将字符串设置为F字符串?所以我想调用一些东西
生成F(str1)
并获取F-string


PS我不能将dict
{'val1':1,'val2':77}
.format
一起使用,因为我不知道字符串中需要哪些变量。我只想让F弦变魔术

首先需要将变量描述为

var1 = None
var2 = None
然后可以将其与f字符串一起使用,如下所示:

x = f'print {var1} and {var2}'

print(x)

就这样,您将得到结果。

您首先需要将变量描述为

var1 = None
var2 = None
然后可以将其与f字符串一起使用,如下所示:

x = f'print {var1} and {var2}'

print(x)
就这样,您将得到结果。

您需要:

str1 = 'date time for {val1} and {val2}'

val1 = 1
val2 = 77

print(eval(f"f'{str1}'"))
你需要:

str1 = 'date time for {val1} and {val2}'

val1 = 1
val2 = 77

print(eval(f"f'{str1}'"))

OP出错,未在样本中分配
val2
code@CDJB谢谢,您一直在搜索一个whileOP,它犯了一个错误,没有在示例中分配
val2
code@CDJB谢谢你,如果你正在使用这个,我一直在搜索两个警告。首先,确保str1来自可信的源代码,因为eval将执行其中包含的任何Python命令。其次,str1不应该是多行字符串-如果是,则使用eval(f'f”“{str1}”“”),否则eval将抛出一个EOL错误。如果使用此字符串,将出现两个警告。首先,确保str1来自可信的源代码,因为eval将执行其中包含的任何Python命令。其次,str1不应该是多行字符串-如果是,则使用eval(f'f”“{str1}”“”),否则eval将抛出EOL错误。