pass/format 大量变量到一个大字符串的最有效和可读的方法是什么?

What is the most efficient and readable way to pass/format lots of variables to a large string?

我有几行像这样的 "lengthy" 行:

content = "<!DOCTYPE html>\n<html>\n<head>\n  <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n  <title>{0} - {1}</title>\n  <link rel=\"stylesheet\" type=\"text/css\" href=\"{3}/{2}.{4}\" />\n</head>\n<body>\n  <!-- layout... -->\n  <script type\"text/javascript\" src=\"{5}/{2}.{6}\"></script>\n</body>\n</html>\n".format(settings["app.name"], ncc, name, settings["dir"]["static.style"], settings["lang.style"], settings["dir"]["static.script"], settings["lang.script"])

仅通过查看这样一条线,您就可以看出它相当大,并且在某些方面难以阅读和/或理解。

是否有更有效和可读性更好的方法来动态地将大量值插入到大字符串中?

将字符串放在列表中,然后像 ' '.join(list) 那样进行连接。这将比简单的连接快得多。

list = ["The quick brown", "fox"] result = " ".join(list) 这里有一个link看区别就是性能

您可以使用 multiline string:

args = (settings["app.name"], ncc, name, settings["dir"]["static.style"], 
        settings["lang.style"], settings["dir"]["static.script"], 
        settings["lang.script"])

content = """\
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>{0} - {1}</title>
  <link rel="stylesheet" type="text/css" href="{3}/{2}.{4}" />
</head>
<body>
  <!-- layout... -->
  <script type"text/javascript" src="{5}/{2}.{6}"></script>
</body>
</html>""".format(args)

另一种选择是:

content = (
    "<!DOCTYPE html>\n<html>\n<head>\n  "
    "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n"
    "  <title>{0} - {1}</title>\n  "
    "<link rel=\"stylesheet\" type=\"text/css\" href=\"{3}/{2}.{4}\" />\n</head>\n<body>\n"
    "  <!-- layout... -->\n  "
    "<script type\"text/javascript\" src=\"{5}/{2}.{6}\"></script>\n</body>\n</html>\n"
).format(
    settings["app.name"], ncc, name, settings["dir"]["static.style"],
    settings["lang.style"], settings["dir"]["static.script"],
    settings["lang.script"]
)

注意每行末尾没有,

然而,生成 HTML 的最佳方法可能是通过一些模板框架,例如jinja、mako 等