Damit ich eine .csv-Datei generieren kann, will ich das html-Dokument in ein mehrdimensionale Python-Liste konvertieren.
Code: Alles auswählen
01 <html>
02 <body>
03 <center>
04 <table>
05 <tbody>
06 <tr>
07 <td>
08 <table>
09 <tbody>
10 <tr>
11 <td>
12 1****
13 </td>
14 <td>
15 2****
16 </td>
17 </tr>
18 <tr>
19 <td>
20 3****
21 </td>
22 <td>
23 4****
24 </td>
25 </tr>
26 </tbody>
27 </table>
28 </td>
29 <td>
30 <table>
31 <tbody>
32 <tr>
33 <td>
34 <font>
35 5****
36 </font>
37 </td>
38 </tr>
39 </tbody>
40 </table>
41 </td>
42 </tr>
43 </tbody>
44 <table>
45 </center>
46 </body>
47 </html>
Im Prinzip soll die Liste so aussehen das für das für jede aufmachende Klammer (<...>) ein [ erstellt wird und für jede schließende Klammer (</...>) ein ]. Im Beispiel sollte die Liste so aussehen:
Code: Alles auswählen
[[[[[[[[[[[1****],[2****]],[[3****],[4****]]]]],[[[[[[5****]]]]]]]]]]]]
Danke für alle Antworten
Ich hoffe ich konnte mein Problem genau genug schildern, sodass jeder es versteht. Falls nicht versuche ich es dann noch einmal.
PS:
Über sowas wie
Code: Alles auswählen
import re
def einteilen(L, x):
reihenfolge = ["html", "body", "center", "table", "tbody", "tr", "td", "table", "tbody", "tr", "td"]
if x > len(reihenfolge)-1:
return L
Li = [einteilen(re.findall("<"+reihenfolge[x]+">.*</"+reihenfolge[x]+">"), x+1) for e in L]
return Li
d = open("datei.html")
dt = d.read()
einteilen(dt, 0)
PPS:
Vielleicht könnte man es mit einer Funktion versuchen die die aufmachenden (x += 1) und zumachenden (x -= 1) Klammern zählt, bis x wieder bei Null angekommen ist.