如何在Python变量中存储HTML字符串?f-string报错解决
解决f-string多行字符串报错“字符串字面量未确定”的问题
你的问题出在用单行双引号定义多行f-string,Python会把换行符当成字符串的结束标记,导致语法错误。以下是几种可行的解决方法:
方法一:使用三引号的f-string(推荐)
Python支持用三引号("""或''')定义多行字符串,f-string完全兼容这种写法,既支持换行,又能正常解析变量插值,同时内部的双引号无需额外转义:
title = "我的网页标题" txt = f"""<html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{title}</title> </head> <body> </body> </html>"""
方法二:用反斜杠连接多行(不推荐,可读性差)
如果坚持用单行引号格式,可以在每行末尾加反斜杠,告诉Python字符串未结束:
title = "我的网页标题" txt = f"<html lang=\"en\">"\ "<head>"\ " <meta charset=\"UTF-8\">"\ " <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">"\ " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">"\ " <title>{title}</title>"\ "</head>"\ "<body>"\ " "\ "</body>"\ "</html>"
方法三:用圆括号包裹多行(可读性略好于反斜杠)
把多行字符串放在圆括号内,Python会自动拼接:
title = "我的网页标题" txt = (f"<html lang=\"en\">" "<head>" " <meta charset=\"UTF-8\">" " <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">" " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">" " <title>{title}</title>" "</head>" "<body>" " " "</body>" "</html>")
注意:原代码中的
<和"是HTML实体转义,在Python字符串里不需要,直接写<和"即可,不会引发语法问题。
内容的提问来源于stack exchange,提问作者sarangkkl
相关产品推荐
相关产品推荐

