CSV to HTML converter
I have spent some time implementing a small script with Python 2.6.2 to help my trivial work: concerting CSV to HTML (more precisely a CSV file to an HTML table). The CSV format for its input depends on what the csv module in Python specifies. The code is pretty straightforward:
#!/usr/bin/python
# csv2html.py
# CSV to HTML Converter
import csv
import sys
table_indent_num = 2
tr_indent_num = 4
td_indent_num = 6
white_space = " "
def main():
csv_reader = csv.reader(open(sys.argv[1]))
table_indent = white_space * table_indent_num
tr_indent = white_space * tr_indent_num
td_indent = white_space * td_indent_num
print table_indent + "<table>"
for i, row in enumerate(csv_reader):
print tr_indent + "<tr>"
# Uncomment the following two lines if you don't
# want a column for indexes
if i == 0: print td_indent + "<th>#</th>"
else: print td_indent + "<td>" + str(i) + "</td>"
# Assume that the first line is a header
for column in row:
if i == 0: print td_indent + "<th>" + column + "</th>"
else: print td_indent + "<td>" + column + "</td>"
print tr_indent + "</tr>"
print table_indent + "</table>"
if __name__ == "__main__":
argn = len(sys.argv)
if argn != 2:
print "Usage: python csv2html.py <CSV file>"
exit(1)
main()
An example of usage is as follows:
$ more sample.csv
title1,title2,title3
"test11",test12,test13
test21,"test,22",test23
$ python csv2html.py sample.csv > sample.html
$ more sample.html
<table>
<tr>
<th>#</th>
<th>title1</th>
<th>title2</th>
<th>title3</th>
</tr>
<tr>
<td>1</td>
<td>test11</td>
<td>test12</td>
<td>test13</td>
</tr>
<tr>
<td>2</td>
<td>test21</td>
<td>test,22</td>
<td>test23</td>
</tr>
</table>