If you don’t like to write a lot of code to make a table in html, you can use this code in Python to do it for you:
# simple table
from random import randrange
import os
def wrap(a, tag):
"Wraps in <td> tag the a"
tag1 = tag
if tag == "table":
tag1 = "table border=1"
if tag == "td" and a.strip().replace(".", "").isdigit():
print(a, "è un numero")
tag1 = "td style=\"text-align:right\""
return f"<{tag1}>{a}</{tag}>"
def split(tab):
"Splits a multiline string in a list of items divided by comma for line"
tab = tab.splitlines()
for n, row in enumerate(tab):
tab[n] = row.split(",")
return tab
def table(tab):
html = '' # contain html
for n, x in enumerate(tab):
for a in x:
html += wrap(a, "td")
html += "<tr>"
html = wrap(html, "table")
return html
data = table(split("""
Impiegato, Performance, data
Rossi Mario, 1000, 1/2/2018
Baldo Franco, 2000, 1/2/2018
""")[1:-1])
with open("Simple.html", "w", encoding="utf-8") as filehtml:
filehtml.write(data)
os.system("Simple.html")
All you have to do is to change the data into the data variable (in the “”” “”” space), with items separated by commas.
This will be the result.
| Impiegato | Performance | data |
| Rossi Mario | 1000 | 1/2/2018 |
| Baldo Franco | 2000 | 1/2/2018 |
Some changes in the code
Lately, I have revisited the code to make it a little more simple and ‘readable’, and with the chance to make row with different colspan. It works for rows with 3 columns that are sometimes 2 colums (the latter will be colspan=2).
from random import randrange
import os
def wrap(a, tag):
"Wraps in <td> tag the a"
tag1 = tag
if tag == "table":
tag1 = "table border=1"
if tag == "td" and a.strip().replace(".", "").isdigit():
print(a, "è un numero")
tag1 = "td style=\"text-align:right\""
return f"<{tag1}>{a}</{tag}>"
cspan = 0
def createHtmlCode(data):
global cspan
htmltable = '' # contain the table tags & data
num_row = len(data[0].split(",")) # Cols from row1
for n, row in enumerate(data): # for all rows
# now every rows become a list (data = [[...][...])
data[n] = row.split(",")
for n, x in enumerate(data):
for a in x:
if len(x) == num_row: # if data i row == 3
htmltable += wrap(a, "td")
else: # if data < 3
if cspan == 0:
htmltable += wrap(a, "td")
cspan += 1
else:
htmltable += wrap(a, "td style='text-align:center' colspan=" + str(num_row-len(x)+1))
cspan = 0
htmltable += "<tr>"
htmltable = wrap(htmltable, "table")
return htmltable
data = """
Descrizione, Coniugi Martini, Coniugi Alessandri
Numero di invitati, 120, 280
Alimenti e bevande, 5000, 7900
Lavoro diretto, 500, 600
lavoro indiretto, 900
ammortamenti, 300
amministrazione, 2300
""".splitlines()[1:-1]
data = createHtmlCode(data)
with open("Simple.html", "w", encoding="utf-8") as filehtml:
filehtml.write(data)
os.system("Simple.html")
The output:
| Descrizione | Coniugi Martini | Coniugi Alessandri |
| Numero di invitati | 120 | 280 |
| Alimenti e bevande | 5000 | 7900 |
| Lavoro diretto | 500 | 600 |
| lavoro indiretto | 900 | |
| ammortamenti | 300 | |
| amministrazione | 2300 | |
Creare una tabella html in Python
More recent post about this topic:
Click here to read the post about making html code for a table with Python.
Utilities
[contact-form][contact-field label=”Name” type=”name” required=”true” /][contact-field label=”Email” type=”email” required=”true” /][contact-field label=”Website” type=”url” /][contact-field label=”Message” type=”textarea” /][/contact-form]