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

时间:2017-08-24 06:44:42

标签: python

我试图找出为什么蟒蛇' format

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)

format成功了index.html

我尝试通过添加脚本标记来更改index.html之后:

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

我正在

KeyError: '\n            a=1\n        '

我的功能被简化以降低复杂性

2 个答案:

答案 0 :(得分:2)

对于python,你使用的是这个字符串:

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

如果您查看format documentation,则会看到它使用&#39; {}&#39;作为将放置输入数据的占位符。所以在你的字符串中你有a=1在那个占位符里面因此python不知道如何处理它。

为了解决这个问题,你必须在字符串中添加双"{{}}"来scape它们,这样python就不会将它们识别为格式化标记:

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

答案 1 :(得分:0)

您需要转义任何不属于格式化广告位的{}字符;通过加倍来实现这一目标:

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

您可能希望查看专门的模板库,例如Jinja2Makoany of the other widely used engines;这些让你可以使用条件和其他编程结构,而不仅仅是将值插入到固定的槽中。