python格式在尝试格式化和html字符串时失败

2024-04-16 15:30:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在想为什么Python

OUTPUT_HTML_PATH = os.path.join(
    os.path.dirname(os.path.abspath(__file__)),
    'formats',
    'html')
with open(os.path.join(OUTPUT_HTML_PATH, 'index.html'), 'r') as f:
    OUTPUT_HTML_PAGE = f.read()

OUTPUT_HTML_PAGE.format(feedback_json=json.dumps(
            feedback, indent=2, sort_keys=True),
            resources_path=args.resources_path)

在旧的index.html的情况下,format成功了

一旦我尝试更改index.html,添加如下脚本标记:

<script type="application/javascript">
    function loadScript(url, callback){
        a=1
    }
</script>

我要走了

KeyError: '\n            a=1\n        '

我的功能被简化以减少复杂性


Tags: pathjsonformatoutputindexoshtmlpage
2条回答

对于python,您使用以下字符串:

"""<script type="application/javascript">
    function loadScript(url, callback){
        a=1
    }
  </script>"""

如果您检查formatdocumentation,您将看到它使用{}作为放置输入数据的占位符。因此在字符串中,占位符中有a=1,因此python不知道如何处理它

为了解决这个问题,您必须添加double"{{}}",以便在字符串中对它们进行scape,这样python就不会将它们识别为格式化标记:

"""<script type="application/javascript">
    function loadScript(url, callback){{
        a=1
    }}
  </script>"""

您需要转义任何不属于格式化槽的{}字符;通过将它们加倍来实现:

<script type="application/javascript">
    function loadScript(url, callback){{
        a=1
    }}
  </script>

但是,您可能希望查看专门的模板库,例如Jinja2Makoany of the other widely used engines;它们还允许您使用条件和其他编程构造,而不仅仅是将值插入固定的插槽中

相关问题 更多 >