If you ever need to generate an HTML table from file data, here is a basic Python 3 script that should do the trick. If you’d rather use Shell Script, check out the Generating an HTML Table Using Shell Script tutorial.
#!/usr/bin/python3
# Run as: create-html-table.py {input-file-name}
# The script requires 1 argument: the input file name.
# It expects a comma-separated input file to parse into an html table,
# and assumes that the column headers are located in the first row.
import sys
filein = open(sys.argv[1], "r")
fileout = open("html-table.html", "w")
data = filein.readlines()
table = "<table>\n"
# Create the table's column headers
header = data[0].split(",")
table += " <tr>\n"
for column in header:
table += " <th>{0}</th>\n".format(column.strip())
table += " </tr>\n"
# Create the table's row data
for line in data[1:]:
row = line.split(",")
table += " <tr>\n"
for column in row:
table += " <td>{0}</td>\n".format(column.strip())
table += " </tr>\n"
table += "</table>"
fileout.writelines(table)
fileout.close()
filein.close()
Input File
The input file should contain data in a comma-delimited format with the column headers located in the first row. For example,
No.,Package,Priority,Is a Dependency? 1,adduser,important,yes 2,apt,important,yes 3,apt-utils,important,no 4,base-files,required,yes 5,base-passwd,required,yes 6,bash,required,no 7,bsdmainutils,important,no 8,bsdutils,required,yes 9,coreutils,required,yes 10,cpio,important,yes 11,cron,important,yes 12,dash,required,yes 13,debconf,required,yes 14,debconf-i18n,important,no 15,debian-archive-keyring,important,yes 16,debianutils,required,yes 17,diffutils,required,no 18,dmidecode,important,no 19,dmsetup,optional,yes 20,dpkg,required,yes
Output File
The output file will be created in the current bash/PowerShell directory, and will be named “html-table.html”. The file will contain the input file’s data formatted into a HTML table structure. For example,
<table>
<tr>
<th>No.</th>
<th>Package</th>
<th>Priority</th>
<th>Is a Dependency?</th>
</tr>
<tr>
<td>1</td>
<td>adduser</td>
<td>important</td>
<td>yes</td>
</tr>
<tr>
<td>2</td>
<td>apt</td>
<td>important</td>
<td>yes</td>
</tr>
<tr>
<td>3</td>
<td>apt-utils</td>
<td>important</td>
<td>no</td>
</tr>
<tr>
<td>4</td>
<td>base-files</td>
<td>required</td>
<td>yes</td>
</tr>
<tr>
<td>5</td>
<td>base-passwd</td>
<td>required</td>
<td>yes</td>
</tr>
<tr>
<td>6</td>
<td>bash</td>
<td>required</td>
<td>no</td>
</tr>
<tr>
<td>7</td>
<td>bsdmainutils</td>
<td>important</td>
<td>no</td>
</tr>
<tr>
<td>8</td>
<td>bsdutils</td>
<td>required</td>
<td>yes</td>
</tr>
<tr>
<td>9</td>
<td>coreutils</td>
<td>required</td>
<td>yes</td>
</tr>
<tr>
<td>10</td>
<td>cpio</td>
<td>important</td>
<td>yes</td>
</tr>
<tr>
<td>11</td>
<td>cron</td>
<td>important</td>
<td>yes</td>
</tr>
<tr>
<td>12</td>
<td>dash</td>
<td>required</td>
<td>yes</td>
</tr>
<tr>
<td>13</td>
<td>debconf</td>
<td>required</td>
<td>yes</td>
</tr>
<tr>
<td>14</td>
<td>debconf-i18n</td>
<td>important</td>
<td>no</td>
</tr>
<tr>
<td>15</td>
<td>debian-archive-keyring</td>
<td>important</td>
<td>yes</td>
</tr>
<tr>
<td>16</td>
<td>debianutils</td>
<td>required</td>
<td>yes</td>
</tr>
<tr>
<td>17</td>
<td>diffutils</td>
<td>required</td>
<td>no</td>
</tr>
<tr>
<td>18</td>
<td>dmidecode</td>
<td>important</td>
<td>no</td>
</tr>
<tr>
<td>19</td>
<td>dmsetup</td>
<td>optional</td>
<td>yes</td>
</tr>
<tr>
<td>20</td>
<td>dpkg</td>
<td>required</td>
<td>yes</td>
</tr>
</table>
Output File Rendered in Website’s CSS
Here is the output file’s HTML table rendered with the CSS formatting used by this website.
| No. | Package | Priority | Is a Dependency? |
|---|---|---|---|
| 1 | adduser | important | yes |
| 2 | apt | important | yes |
| 3 | apt-utils | important | no |
| 4 | base-files | required | yes |
| 5 | base-passwd | required | yes |
| 6 | bash | required | no |
| 7 | bsdmainutils | important | no |
| 8 | bsdutils | required | yes |
| 9 | coreutils | required | yes |
| 10 | cpio | important | yes |
| 11 | cron | important | yes |
| 12 | dash | required | yes |
| 13 | debconf | required | yes |
| 14 | debconf-i18n | important | no |
| 15 | debian-archive-keyring | important | yes |
| 16 | debianutils | required | yes |
| 17 | diffutils | required | no |
| 18 | dmidecode | important | no |
| 19 | dmsetup | optional | yes |
| 20 | dpkg | required | yes |