0

我确信这是微不足道的,但我无法将我的参数放入我的 HTML 字符串中。我从https://templates.campaignmonitor.com/下载了一个标准模板。我试过了:

从'index.html'中提取:

< p align="left" class="article-title">< singleline label="Title">%(headline)< /singleline>< /p>

这是一些作为输入工作的代码:

f = open('index.html','r')
html = str(f.read())
html_complete = html % (headline='Today is the day')

这给出了语法错误。(html 打印良好)。

还尝试了 {} 表示法,但我得到一个 KeyError 可能是因为整个 html 都有“{”。

4

2 回答 2

2
  1. 格式字符是强制性的。占位符序列是

    %(headline)s
               ^
               the s is required!
    
  2. ()只是括号。使用,(你没有)他们会构造一个元组,但元组无论如何都不能包含赋值。您需要一个字典,它由大括号和冒号构成,而不是等号:

    html % {'headline': 'Today is the day'}
    

    或使用dict函数和命名参数:

    html % dict(headline='Today is the day')
    

使用运算符%进行一些替换是可以的,但对于大型 HTML 文件,您可能应该使用一些模板系统。我会推荐genshi。它的模板是格式良好的 xml,它保证格式良好的 xml 输出,并且允许在文档中包含虚拟文本,因此您可以直接在浏览器中查看模板以检查布局,而不是将其交给应用程序以填写实际数据.

于 2013-10-01T09:27:42.267 回答
0

在你的行

html_complete = html % (headline='Today is the day')

尝试这个:

html_complete = html % dict(headline='Today is the day')

避免语法错误。

并根据 Jan Hudec 在他的回答中所说的修复您的 HTML 模板(添加s)。

注意:这dict(a=b)与 相同{ "a": b },它只是有助于避免双引号。

于 2013-10-01T09:29:10.977 回答