问题
I'm trying to make a simple website demo and I have some trouble editing the html using python. The following is the string I defined to store the html (not complete because it's too long). I want to write a function that will throw a error under a certain condition, but I don't know how to insert a line in the string "page".
page="""
<html>
<head>
<title>Sign up</title>
<style type="text/css">
.label {text-align: right}
.error {color: red}
</style>
</head>
<body>
<h2>Sign up</h2>
<form method="post">
<table>
<tr>
<td class="label">
Username
</td>
<td>
<input type="text" name="username" value="">
</td>
<td class="error">
</td>
</tr>
<tr>
<td class="label">
Password
</td>
<td>
<input type="password" name="password" value="">
</td>
<td class="error">
</td>
</tr>
I want to insert the line "There is an error" in the blank between these two lines:
<td class="error">
</td>
Note there are two of this group in the string. How can I insert "There is an error" in the first group using Python? Thanks.
回答1:
python uses C style format strings.
page="""<html>
......
<td class="error">
%s
</td>
</tr>""" % "There was an error"
alternatively, you can use python string.format as
"fooo {x}".format(x="bar").
see (https://docs.python.org/2/library/string.html);
jinja is an excellent template engine if you've got the time. Genshi (https://genshi.edgewall.org/wiki/GenshiTutorial) is worth looking into as well.
for Jinja2:
pip install Jinja2
in python
from jinja2 import Template
page = Template("""<html> ....
<td class="error">{{x}}</td>
""")
page.render(x="There was an error")
来源:https://stackoverflow.com/questions/45026551/python-how-to-insert-a-line-in-a-multi-line-string