from bs4 import BeautifulSoup def create_array_table(data: list, border: list, cnt_p1: int, cnt_p2: int) -> str: STYLE_ARRAY_TABLE = "border-collapse: collapse;" STYLE_TD_TEMPLATE = "border: 1px solid black; width: 1.2em; height: 1.6rem; text-align: center; font-size: 1.3rem;" def style_with_rborder(style: str): style += "border-right: 6px solid black;" return style def style_with_p1(style: str): style += "background-color: lightgray;" return style def style_with_p2(style: str): style += "background-color: gray;" return style if len(data) != len(border): return "" soup = BeautifulSoup("", "html.parser") table = soup.new_tag('table', attrs={'style': STYLE_ARRAY_TABLE}) tr = soup.new_tag('tr') for i in range(len(data)): style = STYLE_TD_TEMPLATE if i < cnt_p1: style = style_with_p1(style) if border[i]: style = style_with_rborder(style) elif cnt_p1 <= i < cnt_p1 + cnt_p2: style = style_with_p2(style) if border[i]: style = style_with_rborder(style) else: if border[i]: style = style_with_rborder(style) td = soup.new_tag('td', attrs={'style': style}) td.string = str(data[i]) tr.append(td) table.append(tr) soup.append(table) return str(soup)