Seite 1 von 1

HTML-Tabelle ergänzen

Verfasst: Sonntag 2. Januar 2022, 18:27
von Knollo
Hallochen allerseits, ich versuche grad eine existierende HTML-Tabelle mit den Werten von Temperatursensoren zu ergänzen. Die jeweils letzte Zeile wird ergänzt:

Code: Alles auswählen

Temperatur=[]
# wird vom Sensor ausgelesen:
Grad = 4.99
with open ("Index.html", "r") as f:
    for zeile in f:
        Temperatur.append(zeile)
    x=len(Temperatur)
    #löschen des ersten und der letzten 5 Tags:
    Temmperatur_neu = Temperatur[1:x-5]

#erste Zeile neu schreiben:    
with open ("Index.html", "w") as f:
    f.write('<!DOCTYPE html>\n')

#den restlichen "Kopf" ergänzen:        
with open ("Index.html", "a") as f:
    for zeile in Temmperatur_neu:
        f.write(zeile)
        
# den Rest mit den Temperaturwerten zusammensetzen:            
endTag = ('\t\t\t<td>' + str(Grad) + '</td>\n', '\t\t</tr>\n', '\t</table>\n', '  </body>\n', '</html>')

#... und anhängen:
with open ("Index.html", "a") as f:
    for element in endTag:
        f.write(element)
    f.close

das passt soweit, aber kann das auch kürzer geschrieben werden?

Danke
Stefan

Re: HTML-Tabelle ergänzen

Verfasst: Sonntag 2. Januar 2022, 18:47
von sparrow
HTML parst und barbeitet man mit den entsprechenden Tools. In der Regel mit BeautifulSoup.

Namen werden in Python klein_mit_unterstrich geschrieben. Ausgenommen KONSTANTEN (komplett groß) und KlassenNamen (PascalCase).

Wenn man eine Datei mit "with" öffnet, muss man sie mit close nicht schließen.
Das macht bei dir aber keinen Unterschied, weil du close eh nicht aufrufst. Also kann die Zeile weg.

Re: HTML-Tabelle ergänzen

Verfasst: Sonntag 2. Januar 2022, 18:58
von Knollo
Hallo, namen_richtig_schreiben wird das Leichteste sein :-), ... und für die BeautifulSoup brauch ich vermutlich etwas mehr Zeit...
Aber danke, bin halt nur der Gelegenheitsnutzer.

Stefan

Re: HTML-Tabelle ergänzen

Verfasst: Sonntag 2. Januar 2022, 19:40
von Knollo
BeautifulSoup läuft perfekt -> Danke :-)

Re: HTML-Tabelle ergänzen

Verfasst: Sonntag 2. Januar 2022, 19:44
von rogerb
Ich würde dafür Jinja2 verwenden.

Jinja2 ist eine Template Sprache, die es erlaubt Daten in ein HTML Dokument einzubetten.
Aber auch dabei gilt, dass man sich einmal mit dem Thema auseinander setzen muss um dann immer wieder von der Einfachheit zu profitieren. Wenn man das nicht möchte, bleibt einem nichts anderes übrig als immer umständlich zu arbeiten.

Das Python-Script liest das Template index.html und schreibt es dann zusammen mit den Daten in output.html

Code: Alles auswählen

from pathlib import Path
from jinja2 import Environment, PackageLoader, select_autoescape

TEMPERATURES = [12.4, 15.6, 14.1]


def main():
    env = Environment(loader=PackageLoader("html_table"), autoescape=select_autoescape())
    template = env.get_template("index.html")
    html = template.render(data={"temperatures": TEMPERATURES})

    (Path().absolute() / "output.html").write_text(html, encoding="utf-8")


if __name__ == "__main__":
    main()
Und das HTML Template für Jinja2 sähe so aus:

Code: Alles auswählen

<!doctype html>

<html lang="en">

<head>
    <title>Temperature Table</title>
</head>

<body>
    <table>
        <tr>
            <th>ID</th>
            <th>Temperature</th>
        </tr>
        {% for temperature in data["temperatures"] %}
        <tr>
            <td>{{loop.counter}}</td>
            <td>{{temperature}}°C</td>
        </tr>
        {% endfor %}
    </table>
</body>

</html>