#python #html #html-table
#python #HTML #html-таблица
Вопрос:
У меня возникли трудности с форматированием таблицы в html через python. Я использую for-loops из предыдущей информации, и первые два столбца были отформатированы, но у меня возникают трудности с размещением определенных значений в нужном месте.
часть моего кода, определяющая второй столбец:
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>"
Это таблица, которую он создает:
- Самый кассовый фильм года, самый похожий 2-й самый похожий 3-й самый похожий
- 2000 Шестое чувство
- 2001 Звездные войны: эпизод I — Призрачная угроза
- 2002 Гарри Поттер и философский камень
- 2003 Властелин колец: две башни
- 2004 Властелин колец: Возвращение короля
- 2005 Звездные войны: Эпизод III — Месть ситхов
- 2006 Пираты Карибского моря: Сундук мертвеца
- 2007 Пираты Карибского моря: на краю света
- (пустой) Идеальный шторм
- (пустой) Планета обезьян
- (пустой) Властелин колец: Братство кольца
- (пустой) Унесенный призраками
- (пустой) залог
- (пустой)Troy
- (пустой) Хроники Нарнии: Лев, ведьма и шкаф
- (пустой)300
Фильмы (Perfect Storm — 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. Ваш HTML неверен (теги не совпадают).
2. Это довольно раздражает. можете ли вы опубликовать полный пример кода? Вы не должны создавать строки таблицы в обоих циклах. Также я вижу, что заголовок таблицы никогда не закрывается. Кроме того, я не понимаю, какие данные
c
содержатся в какой момент. Должно выглядеть примерноfor (...) print "<td>data[0]</td><td>data[1]</td>
и т.д.3.
for c in sorted(max_films): print "<tr><th>" print "<td>c</td>" print "<td>max_films[c]</td>" print "</th></tr>"
попробуйте
Ответ №1:
Ошибки
- Вы не должны использовать строки таблицы (элементы 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>"