Уведомления

Группа в Telegram: @pythonsu

#1 Март 2, 2017 15:18:17

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

Как перевести многомерный список в html-таблицу для QTextEdit

Python 3. PyQt4
Есть многомерные списки, типа:

 d = [[123, 456, 789],
     [444, 555, 669],
     [98, 535, 376],
     [444, 495, 226]]
Хочу такую штуку перевести в вид html-таблицы для вставки в текстовое поле PyQt4. Пока написал такую функцию, но не фурычит:
     def on_click_7(self):
        def aps(i):
            i = ''.join(map(str, i))
            data.append(str(i))
        data = []
        self.pole_vivod.clear() # очистка поля вывода
        aps(['<table>'])
        for i in range(len(d)):
            for j in range(len(d[i])):
                j = '<td>'+str(j)+'<\td>'
            i = '<tr>'+str(i)+'<\tr>'
        aps([d])    
        aps(['</table>'])
        print('<hr>')
        for i in data:
            self.pole_vivod.append(str(i))

Отредактировано Kyrym (Март 2, 2017 15:41:49)

Офлайн

#2 Март 3, 2017 01:28:23

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Как перевести многомерный список в html-таблицу для QTextEdit

Можно воспользоваться готовым решением, на базе pandas:

 import pandas as pd
column_names = ['one', 'two', 'three', 'four']
row_names = ['bob', 'mike', 'john', 'etc1', 'etc2', 'etc3', 'etc4']
df = pd.DataFrame(your_array, index=prices, columns=days) # your_array dim assumed to be 7x4
df.to_html() # returns html-table

Отредактировано scidam (Март 3, 2017 01:28:56)

Офлайн

#3 Март 3, 2017 05:27:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как перевести многомерный список в html-таблицу для QTextEdit

Kyrym
Подобная задача (внедрить набор данных в HTML) довольно стандартна и распространена. Динамическое создание HTML-кода - это стандартная практика в веб программировании, поэтому будет логичным для вашей задачи задействовать специально для этого созданные средства - шаблонизаторы, коих тысячи. Я рекомендую jinja2



Отредактировано FishHook (Март 3, 2017 05:28:20)

Офлайн

#4 Март 3, 2017 08:01:43

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

Как перевести многомерный список в html-таблицу для QTextEdit

Вот решение моей задачи без сторонних модулей:

     def on_click_7(self):
        def aps(i):
            i = ''.join(map(str, i))
            data.append(str(i))
        data = []
        self.pole_vivod.clear() # очистка поля вывода
        aps(['<table border ALIGN=CENTER WIDTH=95%>'])
        for i in d:
            aps(['<tr>'])
            for j in i:
                aps(['<td ALIGN=CENTER>'+str(j)+'</td>'])                
            aps(['</tr>'])
        aps(['</table>'])      
        data = ''.join(map(str, data)) # объединение списка
        self.pole_vivod.append(data)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version