lehrkraefte:blc:informatik:efi-2023:regex

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:efi-2023:regex [2023/12/05 07:26]
Ivo Blöchliger created
lehrkraefte:blc:informatik:efi-2023:regex [2023/12/14 09:25] (current)
Ivo Blöchliger [Ausprobieren]
Line 35: Line 35:
   * https://regex101.com/ Verwenden Sie Python. Die Dokumentation von Python RegEx: https://docs.python.org/3/library/re.html   * https://regex101.com/ Verwenden Sie Python. Die Dokumentation von Python RegEx: https://docs.python.org/3/library/re.html
  
 +  * http://regextutorials.com/
 +  * https://regexcrossword.com/
 +  * https://alf.nu/RegexGolf  (Yay!)
 +  * https://regexone.com/
 +  * https://regex.sketchengine.eu/basic-exercises.html
 ==== Aufgabe: Links extrahieren ==== ==== Aufgabe: Links extrahieren ====
   * Extrahieren Sie alle Links von folgendem Code-Schnipsel:   * Extrahieren Sie alle Links von folgendem Code-Schnipsel:
Line 67: Line 72:
 </code> </code>
 </hidden> </hidden>
 +
 +==== Realworld-Aufgabe: Christbaum-Logdaten analysieren ====
 +Kopieren Sie die log-Datei vom Christbaum und analysieren Sie diese.
 +<code bash>
 +scp ef:python/logs/xmaslights-2023-11-30T164809.401678.log .
 +</code>
 +Mögliche Fragen:
 +  * Welches Programm wurde besonders oft ausgewählt?
 +  * Um welche Uhrzeiten hat der Bewegungsmelder etwas wahrgenommen? Plotten Sie das auch schön.
 +
 +
 +<code python>
 +import re
 +
 +fn = "xmaslights-2023-11-30T164809.401678.log"
 +
 +with open(fn, "r") as f:
 +    lines = f.readlines()
 +
 +pattern = re.compile("since motion: (\d+\.\d+)")
 +#pattern = re.compile("text=")
 +
 +for line in lines:
 +    res = pattern.search(line)
 +    if res:
 +        #print(line)
 +        print(res.group(1))
 +</code>
 +==== Realworld-Aufgabe: Daten aus einer Nesa-Seite extrahieren ====
 +Hier finden Sie einen Screenshot und den zughörigen HTML-Code: {{lehrkraefte:blc:informatik:efi-2023:raumplanh21.zip}}.
 +
 +Schreiben Sie ein Python-Programm mit regular Expressions, das den Raumplan extrahiert.
 +
 +=== Warum das Blödsinn ist ===
 +Gegen eine UI zu programmieren, ist ok für den Einmalgebrauch. Es ist aber nicht nachhaltig, weil die UI jederzeit ändern kann (und wird!). 
 +
 +Auch haben wir HTML-Code vorliegen. Dieser ist bereits strukturiert und auch danach durchsuchbar. Z.B. kann man die Sache in JavaScript «relativ» einfach erledigen (In den Entwickler Tools des Webbrowsers (F12)):
 +<code javascript>
 +Array.from(document.querySelectorAll('.stpt_event_body')).map(e=>e.getAttribute('title'))
 +</code>
 +Liefert ein Array mit den gewünschten Einträgen.
 +
 +
 +
 ==== Weitere Übungen ==== ==== Weitere Übungen ====
 Mit einem [[https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:blc:informatik:ffprg1-2022:wordle:start#wortliste|Crawler in Python]] habe ich deutsche Wortlisten erstellt: {{kurse:ef05a-2021:wortliste05.txt}}. Mit einem [[https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:blc:informatik:ffprg1-2022:wordle:start#wortliste|Crawler in Python]] habe ich deutsche Wortlisten erstellt: {{kurse:ef05a-2021:wortliste05.txt}}.
  • lehrkraefte/blc/informatik/efi-2023/regex.1701757617.txt.gz
  • Last modified: 2023/12/05 07:26
  • by Ivo Blöchliger