HTML 表格在 for 循环中的问题
我在用Python格式化HTML表格时遇到了一些困难。我在用之前的信息做循环,前两列已经格式化好了,但我在把某些值放到正确的位置上遇到了问题。
这是我代码中决定第二列的部分:
for c in sorted(max_films):
print "<tr><th>"
print c
print "<td>"
print max_films[c]
print "</td></tr>"
这部分应该生成第三列
for c in max_list1:
print "<tr><th>"
print "<td>"
print c
print "</td></tr>"
这是它生成的表格:
- 年份 最高票房电影 最相似 第二相似 第三相似
- 2000 第六感
- 2001 星球大战:第一集 - 幽灵的威胁
- 2002 哈利·波特与魔法石
- 2003 指环王:双塔奇谋
- 2004 指环王:王者归来
- 2005 星球大战:第三集 - 西斯的复仇
- 2006 加勒比海盗:亡灵的宝藏
- 2007 加勒比海盗:世界的尽头
- (空白)完美风暴
- (空白)猩球崛起
- (空白)指环王:护戒使者
- (空白)千与千寻
- (空白)替身
- (空白)特洛伊
- (空白)纳尼亚传奇:狮子、女巫和魔衣橱
- (空白)300
这些电影(完美风暴 - 300)应该对齐在第三列,而不是在第二列下面。我该怎么修复这个问题呢?
完整的HTML代码:
print "Content-Type: text/html"
print ""
print "<html>"
print "<body>"
print "<table border=1>"
print "<tr>"
print "<th><font color=black>Year</font></th>"
print "<th><font color=blue>Highest Grossing Film</font></th>"
print "<th><font color=red>Most Similar</font></th>"
print "<th><font color=red>2nd Most Similar</font></th>"
print "<th><font color=red>3rd Most Similar</font></th>"
print "<th><font color=red>4th Most Similar</font></th>"
print "</tr>"
for c in sorted(max_films):
print "<tr><th>"
print c
print "<td>"
print max_films[c]
print "</td></tr>"
for c in max_list1:
print "<tr><th>"
print "<td>"
print c
print "</td></tr>"
print "</body>"
print "</html>"
sorted(max_films) = ['2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007']
max_list1 = ['The Perfect Storm', 'Planet of the Apes', 'The Lord of the Rings: The Fellowship of the Ring', 'Spirited Away', 'Collateral', 'Troy', 'The Chronicles of Narnia: The Lion the Witch and the Wardrobe', '300']
1 个回答
0
错误
- 不要用表格行(tr元素)来表示列!
- 你没有关闭打开的表头(th元素)
- 表头应该只在表格的头部使用,而不是在内容行中!
有效的表格结构
<table>
<tr>
<th>Year</th>
<th>Highest Grossing Film</th>
<th>Most Similar</th>
<th>2nd Most Similar</th>
<th>3rd Most Similar</th>
</tr>
<!-- create rows in a loop -->
<tr>
<td> ... </td>
<td> ... </td>
<td> ... </td>
<td> ... </td>
<td> ... </td>
</tr>
<!-- loop this ^^ -->
</table>
查看示例:http://jsfiddle.net/n2w5D/
一般解决方案
在创建表格时,你不能循环列,因为你需要把一行的所有单元格写在同一行里。表格的结构是基于行作为父元素,而不是列!你需要为每一行准备数据,才能生成像这样的内容:
print "<table>"
print "<tr>"
// print your caption row
print "<th> Year </th>"
print "<th> Highest Grossing Film </th>"
print "<th> Most Similar </th>"
print "<th> 2nd Most Similar </th>"
print "<th> 3rd Most Similar </th>"
print "</tr>"
// loop data
for row_data in data:
print "<tr>"
// print data (maybe: row_data[0] == year, row_data[1] == movie name etc.)
for cell_data in row_data:
print "<td>"
print cell_data
print "</td>"
print "</tr>"
print "</table>"
针对你的情况的解决方案
在你发布完整代码后,我觉得你不是想要列,而是行!我认为这就是你想要的:
for c in sorted(max_films):
print "<tr><td>"
print max_films[c]
print "</td>"
for c in max_list1:
print "<td>"
print c
print "</td></tr>"