Форум сайта python.su
Привет всем,
Допустим, для конкретики, проводится 2 эксперимента (измерение) над N образцами. Пусть каждый эксперимент при этом имеет 2 режима проведения.
Хочу представить результаты экспериментов в виде:
| Эксперимент1 | Эксперимент2 | образец | режим1 | режим2 | режим1 | режим2 | обр 1 | 305 | 327 | 412 | 433 | обр 2 | 307 | 320 | 410 | 430 | ..................................................... обр N | 304 | 321 | 404 | 425 |
Офлайн
Не думаю, что тут нужен инструмент. Если разрядность известна, то можно пользоваться возможностями функции format. Ну и вообще. Лучше пишите результаты сразу с csv или xlsx.
Офлайн
DzmВообще, когда тебе надо такое сделать (что-то большое, сложное и запутанное), нужно применить метод декомпозиции. Ты должен взять это большое и задать вопрос “из каких самых больших структур это состоит?”, потом берёшь каждую из полученных структур и делаешь с ней то же самое, пока не дойдёшь до самых мельчайших элементов. И вот после этого ты уже видишь, что тебе надо написать.
Основную трудность вызывает вывод сложной шапки у таблицы.
вывести_таблицу()
вывести_заголовок_таблицы()
вывести_первый_ряд_заголовка()
вывести_пустую_колонку
вывести_колонку_с_именем1
вывести_колонку_с_именем2
вывести_второй_ряд_заголовка()
вывести_колонку_с_именем
вывести_колонку_с_режимом1
вывести_колонку_с_режимом2
вывести_колонку_с_режимом1
вывести_колонку_с_режимом2
вывести_тело_таблицы()
цикл для каждого набора значений
вывести_ряд_значений()
вывести_колонку_с_именем
вывести_колонку_с_результатом1
вывести_колонку_с_результатом2
вывести_колонку_с_результатом3
вывести_колонку_с_результатом4
конец цикла
>>> def print_table(data): ... print_header() ... print_body(data) ... >>> def print_header(): ... print_header_line1() ... print_header_line2() ... >>> def print_header_line1(): ... print('header line 1') ... >>> def print_header_line2(): ... print('header line 2') ... >>> def print_body(data): ... for row in data: ... print_body_line(row) ... >>> def print_body_line(row): ... print('body line', row) ... >>> >>> print_table([['name1', 'a1', 'b1'], ['name2', 'a2', 'b2']]) header line 1 header line 2 body line ['name1', 'a1', 'b1'] body line ['name2', 'a2', 'b2'] >>>
Отредактировано py.user.next (Май 13, 2017 05:15:48)
Офлайн
DzmНичего удивительного. Таким фуфлом лет 20 уже никто не занимается, со времен господства фортрана.
Удивительно, что поиск решения этой, элементарной задачи результатов не дал
a=""" <!DOCTYPE html> <html> <head> <style> table, th, td { border: 1px solid black; } </style> </head> <body> <table> % for row in rows: ${makerow(row)} % endfor </table> <%def name="makerow(row)"> <tr> % for name in row: <td>${name}</td>\ % endfor </tr> </%def> </body> </html>""" from mako.template import Temlate rows = [[v for v in range(0,10)] for row in range(0,10) tpl =Template(a) print(a.render(rows=rows))
Отредактировано doza_and (Май 13, 2017 09:05:46)
Офлайн
Всем спасибо еще раз за комментарии.
Уточню вопрос, т.к. оказалось это важно: моя таблица является только визуализацией данных для отчета - ворд/гугл док. Если это будет просто красивая графика - это именно то что надо, желательно только что бы не требовало большой дополнительно писанины.
=doza_andМожно чуть по подробней какие пакеты еще можно посмотреть/почитать для графического представления таблиц. Сорри, пробежался по указанной ссылке, но не понял что такое mako. Если это и есть решение то буду изучать со всей внимательностью
А глазками лучше читать нормальную графику в html/pdf/dvi/ps формате.
Офлайн
DzmРешить задачу можно множеством способов. Это один из них.
Если это и есть решение
DzmДля данного подхода больше никакие пакеты не нужны.
какие пакеты еще можно посмотреть
DzmЭто просто библиотека чуток расширяющая функции форматирования текста.
но не понял что такое mako
Офлайн
Тогда проще всего глянуть в XlsxWriter. И потом результат его работы запихнуть в google docs. Там же можно легко строить и диаграммы / графики. Причем это не требует практически никаких усилий.
Отредактировано 4kpt_V (Май 14, 2017 22:04:47)
Офлайн
4kpt_V:) Я практически умею экселом пользоваться. Интересно там реально можно сложные заголовки сделать? Не раскрасить а реально объединить ячейки. Никогда такого не видел. будет прикольно если
Тогда проще всего глянуть в XlsxWriter
4kpt_V:):):)
это не требует практически никаких усилий.
Офлайн
doza_and
Дядька, да. Можно и объединять и даже фильтры добавлять. Короче очень много можно. Пользуюсь постоянно. Даже отчеты строю исключительно им.
Офлайн
Спасибо за инфу! горячий тебе привет из нашего далеко! Наверное мотосезон уже открыл? Я то открыл, только вот дождь со снегом часто мешают.
Офлайн