全新的python,我遇到了烦人的格式化问题。我写了一个脚本,登录Confluence并发布内容。不幸的是,Confluence页面只识别HTML5语法,并且格式化这种方式比我预期的要长得多。
我编辑了脚本,用\n
个字符替换了所有br \
个字符,这让我变得丑陋,但却受人尊敬。为了真正整理一下,我最好把这一切都放在一张桌子里。
我已经在下面概述了我想要的HTML5代码,但我不知道在不使用某些外部Python模块/库的情况下将这些标记添加到我的字符串header1 header 2 header3 header4 header 5 10 15 20 27 to/path/foo.c 7 67 10 22 to/path/boo.c ...etc
的最简单/最有效的方法。我相信使用Python 2.7.5。
HTML5代码,用于生成下面的表格
<table style="width:100%" \>
<tr \>
<th \>Header1
<th \>Header2
<th \>Header3
<th \>Header4
<th \>Header5
<tr \>
<td \>10
<td \>15
<td \>20
<td \>27
<td \>to/path/foo.c
<tr \>
<td \>7
<td \>67
<td \>10
<td \>22
<td \>to/path/boo.c
<tr \>
<td \>1
<td \>2
<td \>3
<td \>4
<td \>to/path/moo.c
<tr \>
<th \> Sum:
<tr \>
<td \>18
<td \>84
<td \>33
<td \>53
myDesiredTableFormat
Header1 Header2 Header3 Header4 Header5
10 15 20 27 to/path/foo.c
7 67 10 22 to/path/boo.c
1 2 3 4 to/path/moo.c
Sum:
18 84 33 53
我想写这个脚本的方式是:
<table style="width:100%" \><tr \>
添加到将存储此表的变量<th \>
<td \>
\n
替换为<br \><tr \>
。请告诉我在Python中将字符串转换为HTML5表有一种更简单,更有效(或更优雅的方式)(即不使用我必须下载的模块......使用该语言的导入很好)。< / p>
答案 0 :(得分:0)
这样的事情怎么样:
string = "header1 header2 header3 header4 header5 <br \> 10 15 20 27 to/path/foo.c <br \> 7 67 10 22 to/path/boo.c"
rows = string.split("<br \>")
data = map(lambda r: r.split(" "), rows)
html_rows = map(lambda r: "<td>" + "</td><td>".join(r) + "</td>", data)
html_table = "<table><tr>" + "</tr><tr>".join(html_rows) + "</tr></table>"
编辑:哦等等,我忘记了标题和汇总行
string = "header1 header2 header3 header4 header5 <br \> 10 15 20 27 to/path/foo.c <br \> 7 67 10 22 to/path/boo.c"
// Make array of rows
rows = string.split("<br \>")
rows = map(lambda r: r.strip(" "), rows)
// Make array of arrays of column data
data = map(lambda r: r.split(" "), rows)
// The first row is header data; remove it
header_data = data.pop(0)
// HTML-ize each row
header_rows = "<th>" + "</th><th>".join(header_data) + "</th>"
html_rows = map(lambda r: "<td>" + "</td><td>".join(r) + "</td>", data)
// Concatenate everything into one table, but do not close it yet
html_table = "<table><tr>" + header_rows + "</tr><tr>" + "</tr><tr>".join(html_rows) + "</tr>"
// Total data and put it in Sum row
html_table += "<tr><th>Sum</th></tr>"
sums = [0, 0, 0, 0]
for row in data:
sums[0] += int(row[0])
sums[1] += int(row[1])
sums[2] += int(row[2])
sums[3] += int(row[3])
sums = map(str, sums)
// Add summation data and close the table
html_table += "<tr>" + "</tr><tr>".join(sums) + "</tr></table>"
请记住,此代码依赖于分隔符非常一致:每列之间的空格,每行之间的确切字符串<br \>
。