我有一張需要解析的表,具體來說,它是一個有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