Python 中的多行 f 字符串" " " " "" 将其他代码行转换为我正在寻找的内容之外的字符串



我正在尝试发送附件,并且正在格式化我的电子邮件内容。

由于某些原因,当我这样做的时候:

variable = f"""
email content formatting line 1
email content formatting line 2
email content formatting line 3
"""

""" """中的行并不都变成字符串,下面剩下的代码也变成字符串。知道为什么吗?

例如,msg_textmsg.attach行变成字符串。我如何修复我的f字符串设置?

html = f"""
<html><body>
<h1> Monthly Accounting File ({month_end.strftime("%m/%d/%Y")})</h1>
<p>{df.to_html(index=False)}</p>
</body></html>
"""
msg_text = MIMEText(html, 'html')
msg.attach(msg_text)

如果我在f之后添加一个空格,那么我的行变成字符串,但我认为这不是f字符串的正确语法。这是针对Jupyter Notebook Python 3.0的。请看下面的例子:

html = f """
<html><body>
<h1> Monthly Accounting File ({month_end.strftime("%m/%d/%Y")})</h1>
<p>{df.to_html(index=False)}</p>
</body></html>
"""
msg_text = MIMEText(html, 'html')
msg.attach(msg_text)

制作多行f字符串在这里和这里以及其他地方都有介绍。在这个例子中,多行f字符串在多行三引号字符串中工作,只有f在第一行调用它作为f字符串。注意,尽管这里和那里尝试在其余行上缩进。我发现我必须去掉缩进才能让它工作。

我有时称三引号字符串赋值为"文档字符串",但它们实际上是不同的。为了完整起见,这里使用带有f-strings的Python docstring是不同的。这里的答案很好地涵盖了Python中的"文档字符串"为什么必须是常规字符串字面值。

相关内容

最新更新