Ich habe eine Tabelle, die ich analysieren muss, speziell ist es ein Schulzeitplan mit 4 Blöcken von Zeit und 5 Blöcke von Tagen für jede Woche. Ich habe versucht, es zu analysieren, aber ehrlich gesagt bin ich nicht sehr weit gekommen, weil ich mit dem Umgang mit den Spalten rspspan und colspan festhalte, weil sie im Wesentlichen bedeuten, dass es an Daten mangelt, die ich fortführen muss.Analysieren einer Tabelle mit rowspan und colspan
Als Beispiel dafür, was ich tun möchte, ist hier eine Tabelle:
<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>
ich diesen Tisch nehmen wollen und es in dieser Liste konvertieren:
[[1,1,2,3,4],
[1,1,2,3,4],
[1,1,2,5,6],
[1,1,2,5,6]]
Im Moment bin ich eine flache Liste, ähnlich dieser:
[1,2,3,4,5,6]
Aber in Wörterbuchform, mit Informationen, wie viele Spalten und ro ws es überspannt, eine Beschreibung davon und welche Woche es ist.
Offensichtlich muss dies für jede Möglichkeit von rowspan/colspan und für mehrere Wochen in der gleichen Tabelle arbeiten.
Die HTML ist nicht so sauber wie ich es porträtiert habe, es gibt eine Menge Attribute, die ich weggelassen habe, und der Text ist offensichtlich nicht so sauber geschnitten wie 1,2,3,4, sondern Blöcke von beschreibender Text. Aber wenn ich diesen Teil lösen könnte, sollte es leicht genug sein, in das zu integrieren, was ich bereits geschrieben habe.
Ich habe lxml.html und Python verwendet, um dies zu tun, aber ich bin offen für die Verwendung anderer Module, wenn es eine einfachere Lösung bietet.
Ich hoffe, jemand kann mir helfen, weil ich wirklich nicht weiß, was zu tun ist.
EDIT:
<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>
Dies wird mir einige Probleme verursacht, wird dies durch reclosedev bereitgestellt
[' ', ' ', ' ', 'Thing', ' ']
[' ', ' ', ' ', ' ', ' ']
[' ', ' ', ' ', ' ', ' ']
[' ', ' ', ' ', ' ', ' ']
Mit dem Code ausgibt, was muss ich es anpassen ändern, so dass es
ausgibt[' ', ' ', ' ', 'Thing', ' ']
[' ', ' ', ' ', 'Thing', ' ']
[' ', ' ', ' ', 'Thing', ' ']
[' ', ' ', ' ', 'Thing', ' ']
Stattdessen?
EDIT2: Mit reclosedev der neuen Funktion, es ist eine Lösung nähern, aber es gibt immer noch Fälle, in denen es nicht richtig Zellen platzieren:
<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>
Damit die ursprüngliche Tabelle zeigt es als solches:
[
[' ', ' 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' , ' ']
]
Aber die neuen Rufausgänge dies:
[
[' ', ' 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' , ' ']
]
Es würde uns wirklich helfen, wenn Sie uns zeigen könnten, welchen Code Sie gerade verwenden und welche Ausgabe Sie tatsächlich erhalten, anstatt eine Ausgabe, die ähnlich ist, was Sie bekommen. –