【问题标题】:How to make string f-string after variable initiazation? [duplicate]如何在变量初始化后制作字符串 f-string? [复制]
【发布时间】:2019-11-19 15:34:57
【问题描述】:

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

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

然后初始化字符串里面的变量:

val1 = 1
val2 = 77

调用print(str1) 将返回'date time for {val1} and {val2}'。但我想得到 'date time for 1 and 77'

有什么函数可以把一个字符串变成F字符串吗?所以我想打电话给make_F(str1) 并得到 f-string

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

【问题讨论】:

标签: python python-3.x string formatting format


【解决方案1】:

你需要:

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

val1 = 1
val2 = 77

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

【讨论】:

  • 如果你使用这个,会有两个警告。首先,确保 str1 来自受信任的来源,因为 eval 将执行其中包含的任何 Python 命令。其次,str1 不应该是多行字符串 - 如果是,则使用 eval(f'f"""{str1}"""') 否则 eval 将抛出 EOL 错误。
【解决方案2】:

您首先需要将变量描述为例如

var1 = None
var2 = None

然后你可以像这样将它与 f-string 一起使用:

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

print(x)

就是这样,你会得到结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2018-09-27
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多