Как двухмерный python массив преобразовать в HTML таблицу?

203
26 апреля 2018, 07:07

Надеюсь сегодня у вас отличное настроение, но перейдем к сути вопроса.

Есть list:

relations_table = [[0 for i in range(0, len(sounds))] for j in range(0, len(sounds))]
for i in relations:
    relations_table[i.left_sound_id-1][i.right_sound_id-1] = i.weight

Выглядит примерно так:

[[25, 98, 40, 17, 66, 65, 41, 11, 70, 58], [89, 93, 35, 89, ...

Как заполнить эти данные в html таблицу, где индекс обозначает ряд и столбец клетки со значением?

Если можно пример кода. Спасибо.

Answer 1

Самое простое решение:

relations_table = [[25, 98, 40, 17, 66, 65, 41, 11, 70, 58], [89, 93, 35, 89, 40, 17, 66, 65, 41, 99]]
html = '<table>'
for row in relations_table:
    html += '<tr>'
    for value in row:
        html += '<td>{}</td>'.format(value)
    html += '</tr>'
html += '</table>'
print(html)

Другой вариант, более удобный для сложных данных -- шаблонизатор jinja:

# pip install jinja2
import jinja2
template = jinja2.Template('''
<table cellspacing="2" border="1" cellpadding="5">
    {% for row in relations_table %}
    <tr>
        {% for value in row %}
        <td>{{ value }}</td>
        {% endfor %}    
    </tr>
    {% endfor %}
</table>
''')
html = template.render(relations_table=relations_table)
print(html)

Вот так будет выглядеть таблица в браузере:

Можно и более сложные штуки создавать. Пример генерации html страницы через jinja2

Answer 2

Можно воспользоваться модулем Pandas:

import pandas as pd
html = pd.DataFrame(relations_table).to_html(header=None, index=False, border=2)
with open('d:/temp/a.html', 'w') as f:
    f.write(html)

Результат:

READ ALSO
Javascript работа с чекбоксами, не обычный вопрос

Javascript работа с чекбоксами, не обычный вопрос

Помогите, ломаю голову уже который день надо этим, в общем, есть html:

360
Нужна помощь по иконкам

Нужна помощь по иконкам

Пишу мобильную версию сайта и столкнулся с проблемой:

203