How about using this:
Parse HTML table to Python list?
But, use collections.OrderedDict()
instead of simple dictionary to preserve order. After you have a dictionary, it is very-very easy to get and format the text from it:
Using the solution of @Colt 45:
import xml.etree.ElementTree
import collections
s = """\
<table>
<tr>
<th>Height</th>
<th>Width</th>
<th>Depth</th>
</tr>
<tr>
<td>10</td>
<td>12</td>
<td>5</td>
</tr>
<tr>
<td>0</td>
<td>3</td>
<td>678</td>
</tr>
<tr>
<td>5</td>
<td>3</td>
<td>4</td>
</tr>
</table>
"""
table = xml.etree.ElementTree.XML(s)
rows = iter(table)
headers = [col.text for col in next(rows)]
for row in rows:
values = [col.text for col in row]
for key, value in collections.OrderedDict(zip(headers, values)).iteritems():
print key, value
Output:
Height 10
Width 12
Depth 5
Height 0
Width 3
Depth 678
Height 5
Width 3
Depth 4