【发布时间】:2011-11-10 21:41:31
【问题描述】:
原创
我想解析一串 html 代码并在结束标记 + 初始表单标记之后添加换行符。这是到目前为止的代码。它在“re.sub”行中给了我一个错误。我不明白为什么正则表达式会失败。
def user():
tags = "<form><label for=\"email_field\">Email:</label><input type=\"email\" name=\"email_field\"/><label for=\"password_field\">Password:</label><input type=\"password\" name=\"password_field\"/><input type=\"submit\" value=\"Login\"/></form>"
result = re.sub("(</.*?>)", "\1\n", tags)
return dict(form_code=result)
PS。我觉得这可能不是最好的方法......但我仍然想学习如何做到这一点。
编辑
我的 default.py 中缺少“import re”。感谢 ruak。
import re
现在我的页面源代码显示如下(在客户端浏览器中检查)。实际页面将表单代码显示为文本,而不是 UI 元素。
<form><label for="email_field">Email:</label>
<input type="email" name="email_field"/><label
for="password_field">Password:</label>
<input type="password" name="password_field"/><input
type="submit" value="Login"/></form>
编辑 2
将 XML() 助手添加到 default.py 后,表单代码呈现为 UI 元素。感谢安东尼的帮助。更正以下行:
return dict(form_code=XML(result))
最终编辑
修复我自己想出的正则表达式。这不是最佳解决方案,但至少它有效。最终代码:
import re
def user():
tags = "<form><label for=\"email_field\">Email:</label><input type=\"email\" name=\"email_field\"/><label for=\"password_field\">Password:</label><input type=\"password\" name=\"password_field\"/><input type=\"submit\" value=\"Login\"/></form>"
tags = re.sub(r"(<form>)", r"<form>\n ", tags)
tags = re.sub(r"(</.*?>)", r"\1\n ", tags)
tags = re.sub(r"(/>)", r"/>\n ", tags)
tags = re.sub(r"( </form>)", r"</form>\n", tags)
return dict(form_code=XML(tags))
【问题讨论】: