有什么方法可以将“ f-string”用于存储在变量中的多行字符串?

时间:2019-06-09 08:05:29

标签: python python-3.x

我想使用html模板发送电子邮件。该模板位于html文件中,并且其中包含一些变量。如果我读取文件并将其文本存储在变量中:

with open('test.html', 'r') as f:
    html = f.read()

是否可以在'html'变量中使用f字符串?

2 个答案:

答案 0 :(得分:1)

f字符串(也称为formatted string literals)是语言语法的一部分,是用代码描述字符串的一种方式。您要在这里实现的目标有所不同。

您描述的内容通常称为模板。 Python标准库提供了Template strings,但它们的工作原理与f字符串略有不同。

此外,注释中还提到了许多第三方模板库,您可以在互联网上search来选择最适合您的应用程序的其他模板库(模块/软件包)。

答案 1 :(得分:-5)

如果确实需要,可以使用exec(),但是更好的选择是使用一些模板引擎:

test.html的内容:

<html>
<body>
This is multiline string string,
var1 will print like hex: {var1:x},
Another variable {var2}
</body>

脚本:

with open('test.html', 'r') as f:
    var1 = 8674
    var2 = 'World'
    exec("v = f'''" + f.read() + "'''")
    print(v)

打印:

<html>
<body>
This is multiline string string,
var1 will print like hex: 21e2,
Another variable World
</body>