Создать таблицу HTML из 2 списков в python 3 - PullRequest
0 голосов
/ 28 мая 2020

Я посмотрел здесь , но решение все еще не работает для меня ... У меня есть 2 lists

list1 = ['src_table', 'error_response_code', 'error_count', 'max_dt']

list2 = ['src_periods_43200', 404, 21, datetime.datetime(2020, 5, 26, 21, 10, 7)',
         'src_periods_86400', 404, 19, datetime.datetime(2020, 5, 25, 21, 10, 7)']

list1 несет column names таблица HTML.

Второй list2 несет table data.

Как мне сгенерировать HTML table из этих 2 списков, чтобы первый список использовался для column names и второй как table data (по строкам)

результат должен быть:

src_table          |  error_response_code  | error_count  | max_dt                  |
src_periods_43200  |  404                  | 21           | 2020-5-26    21:10:7    |
src_periods_43200  |  404                  | 19           | 2020-5-25    21:10:7    |

большое спасибо

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Это должно сработать

import pandas as pd
import datetime

list1 = ['src_table', 'error_response_code', 'error_count', 'max_dt']

list2 = [
    'src_periods_43200', 404, 21, datetime.datetime(2020, 5, 26, 21, 10, 7),
    'src_periods_86400', 404, 19, datetime.datetime(2020, 5, 25, 21, 10, 7)
]


index_break = len(list1)
if len(list2) % index_break != 0:
    raise Exception('Not enough data.')

staged_list = []
current_list = []

for idx in range(0, len(list2)):
    current_list.append(list2[idx])

    if len(current_list) == index_break:
        staged_list.append(current_list.copy())
        current_list = []

df = pd.DataFrame(data=staged_list, columns=list1)

print(df.to_html())
0 голосов
/ 28 мая 2020

Вы можете легко написать свою функцию для этого Примерно:

import datetime

list1 = ['src_table', 'error_response_code', 'error_count', 'max_dt']

list2 = ['src_periods_43200', 404, 21, datetime.datetime(2020, 5, 26, 21, 10, 7), 'src_periods_86400', 404, 19, datetime.datetime(2020, 5, 25, 21, 10, 7)]

print('<table>')
print('<thead><tr>')
for li in list1:
    print(f'<th>{li}</th>')
print('</tr></thead>')
print('<tbody>')
for i in range(0, int(len(list2)/4)):
    print('<tr>')
    print(f'<td>{list2[4*i+0]}</td>')
    print(f'<td>{list2[4*i+1]}</td>')
    print(f'<td>{list2[4*i+2]}</td>')
    print(f'<td>{list2[4*i+3]}</td>')
    print('</tr>')
print('</tbody>')
print('</table>')
...