我正在使用用于编写HTML页面的Python脚本。它使用一系列开关来确定写入的页面。它还为代码示例使用<pre>
标记。我不喜欢关于<pre>
标签的事情是它弄乱了.py脚本中的格式。 if / elif / else条件的层次结构被破坏,因为标签现在是左对齐的。我知道<pre>
标签考虑了空格,但是无论如何要在Python脚本中格式化字段,以便代码更清晰,更好地格式化?
所以现在就是这样
def main():
if true:
page=<b>This is a sample</b>
<pre>
This is now left justified to match the pre tag but looks ugly in the code
</pre>
else:
page="<b>This would look much better</b>
<pre>
But all the white spacing to keep it aligned makes the HTML page
formatted wrong but it is much easier to read, edit here in the script
</pre>
return page
答案 0 :(得分:0)
将字符串移动到全局变量,甚至可以在单独的模块中移动:
sample_page = '''\
<b>This is a sample</b>
<pre>
This is now left justified to match the pre tag but looks ugly in the code
</pre>
'''
better_sample = '''\
<b>This would look much better</b>
<pre>
But all the white spacing to keep it aligned makes the HTML page
formatted wrong but it is much easier to read, edit here in the script
</pre>
'''
请注意这些完全是否缩进。
然后在常规流程中使用这些:
if True:
page = sample_page
else:
page = better_sample
您可以轻松地将其与string formatting结合使用;字符串变量中的占位符,使用str.format()
在正常流程中填充这些占位符。
答案 1 :(得分:0)
效率不高,但我会像这样连接字符串:
def main():
if True:
page = "<b>This is a sample</b>\n"
page += "<pre>\nThis is now left justified...\n</pre>"
else:
page = "<b>...</b>"
page += "..."
&#34; \ n&#34;字符将被解释为换行符。在这种情况下,第一个示例中的 This 将是左对齐的。只需根据需要添加空格。
如果您想让这个过程更有效率,可以使用StringIO,如下所示:
import StringIO
def main():
text = None
if True:
page = StringIO.StringIO()
page.write("<b>Testing</b>\n")
page.write("<pre>\nThis is left justified.\n</pre>")
else:
pass
text = page.getvalue()
page.close()
return text
if __name__ == '__main__':
print main()
注意#1 :不需要标记之外的换行符,因为HTML并不关心空格。如果您正在阅读来源,那主要是为了可读性。
注意#2 :我不会在任何类型的生产环境中使用它,但它适用于简单的事情。