我正在尝试使用python编写一个文本文件Web文档(第一年学生学习python的基本概念)
说我有这样的HTML模板:
html_template = """<!DOCTYPEhtml>
<html>
<head>
<title>News Archive</title>
</head>
<body>
<br>
<ol>
<!-- Article 1 -->
<h1>***TITLE***</h1>
<img src=***IMGURL***
<p>***DESCRIPTION***</p>
<p><strong> Full story: </strong> ***LINK*** </p>
<p><strong> Dateline: </strong> ***PUBDATE*** </p>
<br/>
<!-- Article 2 -->
<h1>***TITLE***</h1>
<img src=***IMGURL***
<p>***DESCRIPTION***</p>
<p><strong> Full story: </strong> ***LINK*** </p>
<p><strong> Dateline: </strong> ***PUBDATE*** </p>
</body>
</html>
"""
假设我想按顺序用列表中的字符串替换***TITLE***
的所有实例。这是包含字符串的列表:
titles = ['HI', 'HELLO']
要将***TITLE***
的第一个实例替换为'HI'
,将***TITLE***
的第二个实例替换为'HELLO'
,我会这样做:
for t in titles:
html_template = html_template.replace('***TITLE***', t, 1)
但是如果我想创建一个for循环(在一个函数中),例如,***TITLE***
替换为包含10个字符串的相应列表***IMGURL***
,其中包含10个字符串的相应列表, ***DESCRIPTION***
包含10个字符串的相应列表,以及其他占位符及其各自的10个字符串列表等等?
我已经尝试了下面的功能但是IDLE环境说它不起作用:语法错误和解析时的Python意外EOF。它出错的地方是:
1. extract_file(file)
- 当我尝试在shell窗口中通过yo = generate_html('file.html')
(file.html是文件名)测试它并打印出来时,shell窗口返回None
。
2. for i in image_url:
- 在阅读:
功能:
def html_extract(file):
extract_file(file) (calls the respective lists for respective placeholder)
for t in titles:
html_code = html_template.replace('***TITLE***', t, 1)
for i in image_url:
html_code = html_code.replace('***IMGURL***', i, 1)
for d in descriptions:
html_code = html_code.replace('***DESCRIPTION***', d, 1)
for l in links:
html_code = html_code.replace'***LINK***', l, 1)
for p in pubdates:
html_code = html_code.replace('***PUBDATE***', p, 1)
答案 0 :(得分:0)
replace()
的第4次通话中缺少括号。此外,作为函数的结果,最好返回本地html_code
。
此外,如果函数内的第一行应该是docstring,你应该在一对"""
"""
中使它成为一个字符串文字,并给它与其余部分相同的缩进代码。
答案 1 :(得分:0)
你可以(并不代表你 )使用zip:
titles = ['HI', 'HELLO']
urls = ['url1', 'url2']
descriptions = ['desc1', 'desc2']
links = ['link1', 'link2']
dates = ['date1', 'date2']
for title, url, description, link, date in zip(titles, urls, descriptions, links, dates):
html_template = html_template.replace('***TITLE***', title, 1)
html_template = html_template.replace('***IMGURL***', url, 1)
html_template = html_template.replace('***DESCRIPTION***', description, 1)
html_template = html_template.replace('***LINK***', link, 1)
html_template = html_template.replace('***PUBDATE***', date, 1)
print(html_template)
"""<!DOCTYPEhtml>
<html>
<head>
<title>News Archive</title>
</head>
<body>
<br>
<ol>
<!-- Article 1 -->
<h1>HI</h1>
<img src=url1>
<p>desc1</p>
<p><strong> Full story: </strong> link1 </p>
<p><strong> Dateline: </strong> date1 </p>
<br/>
<!-- Article 2 -->
<h1>HELLO</h1>
<img src=url2>
<p>desc2</p>
<p><strong> Full story: </strong> link2 </p>
<p><strong> Dateline: </strong> date2 </p>
</body>
</html>
您应该做的是使用正确的HTML模板引擎(no, I'm not even going to suggest regex)。