我有一张需要解析的表,具体来说,它是一个有4个时间块的学校时间表,每周有5个块时间。我试图解析它,但是实际上并没有走得太远,因为我被困在如何处理rowspan和colspan属性,因为它们实际上意味着缺少我需要继续的数据。使用rowspan和colspan解析表
至于什么我想要做一个例子,这里有一个表:
<tr>
<td colspan="2" rowspan="4">#1</td>
<td rowspan="4">#2</td>
<td rowspan="2">#3</td>
<td rowspan="2">#4</td>
</tr>
<tr>
</tr>
<tr>
<td rowspan="2">#5</td>
<td rowspan="2">#6</td>
</tr>
<tr>
</tr>
我想利用这个表,并将其转换成该列表:
[[1,1,2,3,4],
[1,1,2,3,4],
[1,1,2,5,6],
[1,1,2,5,6]]
现在我得到一个平板清单,类似于此:
[1,2,3,4,5,6]
但在字典形式,关于多少列和ro它的跨度,它的描述以及它在哪一周。
很显然,这需要为rowspan/colspan的每一种可能性以及同一表中的多个星期工作。
html不像我描绘的那样干净,还有很多我遗漏的属性,而且文本显然不像1,2,3,4那样干净,描述性文本。但是如果我能够解决这部分问题,那么它应该很容易融入到我已经写过的内容中。
我一直在使用lxml.html和Python来做到这一点,但我打算使用其他模块,如果它提供了一个更简单的解决方案。
我希望有人能帮助我,因为我真的不知道该怎么做。
编辑:
<table>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td rowspan="4">Thing</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
这引起了我一些问题,这是输出
[' ', ' ', ' ', 'Thing', ' ']
[' ', ' ', ' ', ' ', ' ']
[' ', ' ', ' ', ' ', ' ']
[' ', ' ', ' ', ' ', ' ']
与reclosedev提供的代码,我需要做什么改变去适应它,所以它输出
[' ', ' ', ' ', 'Thing', ' ']
[' ', ' ', ' ', 'Thing', ' ']
[' ', ' ', ' ', 'Thing', ' ']
[' ', ' ', ' ', 'Thing', ' ']
取而代之?
EDIT2:使用reclosedev的新功能,它接近一个解决方案,但仍有一些它不能正确放置电池的情况:
<table>
<tr>
<td> </td>
<td rowspan="2"> DMAT Aud. 6 </td>
<td rowspan="4"> Exam</td>
<td rowspan="2"> DMAT Aud. 7</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td rowspan="2"> CART Aud. 4</td>
</tr>
<tr>
<td> </td>
<td rowspan="2"> CART Aud. 4</td>
<td rowspan="2"> OOP Aud. 7</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
这样,原来的表显示它是这样:
[
[' ', ' DMAT Aud. 6 ', ' Exam', ' DMAT Aud. 7', ' '],
[' ', ' DMAT Aud. 6 ', ' Exam', ' DMAT Aud. 7', ' CART Aud. 4'],
[' ', ' CART Aud. 4' , ' Exam', ' OOP Aud. 7' , ' CART Aud. 4'],
[' ', ' CART Aud. 4' , ' Exam', ' OOP Aud. 7' , ' ']
]
但新的呼叫输出这样的:
[
[' ', ' DMAT Aud. 6 ', ' Exam', ' DMAT Aud. 7', ' '],
[' ', ' DMAT Aud. 6 ', ' Exam', ' DMAT Aud. 7', ' CART Aud. 4'],
[' ', ' CART Aud. 4' , ' Exam', ' CART Aud. 4', ' OOP Aud. 7'],
[' ', ' CART Aud. 4' , ' Exam', ' OOP Aud. 7' , ' ']
]
如果你能告诉我们你正在使用什么代码以及你实际得到了什么输出,而不是输出与你所得到的输出类似,那真的会对我们有帮助。 – 2012-04-02 15:05:34