====== Regular Expressions und HTML-Dateien ====== ===== Einführungsbeispiel ===== Aus einer HTML-Datei sollen die Links mit verlinktem Text extrahiert werden. Beispiel: Fachgruppe Informatik Der HTML-Tag '''' definiert einen Link. Im Attribut ''href'' steht die URL (Web-Adresse). Der verlinkte Text steht danach (beendet durch ein ). Das gewünschte CSV-Format ist folgendes: Fachgruppe Informatik;https://fginfo.ksbg.ch/ Die Idee ist natürlich, die Umwandlung in einem Aufwasch für die ganze Datei zu erledigen. * Wir verwenden folgende HTML-Datei: {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:page.html}}, die Sie bitte herunterladen und in NotePad++ öffnen. * Löschen Sie bitte alle Zeilen, die die Zeichenkette ''"(.*?)".*?>(.*?)"'' * Als letztes vervollständigen sie die Links durch ''https://fginfo.ksbg.ch'' durch eine geeignete Ersetzung. * Speichern Sie die Datei als ''links.csv'' und öffnen Sie diese mit Excel. Welches Problem gibt es noch? * Schliessen Sie Excel wieder (sonst kann die Datei ''links.csv'' mit Notepad++ nicht wieder gespeichert werden). * In Notepad++ kann die Codierung angepasst werden. Im Menu Encoding -> Convert to ANSI. Speichern Sie wieder mit **Ctrl-S**. * Öffnen Sie die Datei noch einmal mit Excel und überprüfen Sie, ob das Problem jetzt behoben ist. * Eine Suche nach ''notepad++ delete all lines not containing a pattern'' hat als ersten Treffer folgende Seite ergeben: https://superuser.com/questions/290247/delete-all-lines-in-notepad-except-lines-containing-a-word-i-need/292677 wobei wieder der erste Lösungsvorschlag zum Erfolg führt. * Das **Encoding** gibt an, wie Buchstaben (insbesondere Sonderzeichen wie ä, é etc.) codiert, d.h. binär dargestellt werden. * Praktisch alle Webseiten und Computersysteme verwenden heute (und schon seit langem) das universelle Encoding UTF-8, ausser natürlich Microsoft Windows :-/ ===== Regular Expressions ===== * {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:regexp.pdf|Slides zu Regular Expressions}} ===== Summe von Zahlen ===== Bestimmen Sie die Summe der Zahlen in folgender Datei: {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:zahlen.txt}}. Beachten Sie, dass alle Zahlen Ganzzahlen sind, d.h. das Komma steht als Trennzeichen für Tausender (amerikanisches Format). Beachten Sie ebenfalls, dass die Anzahl Leerschläge zwischen den Zahlen variabel sind. Die Summe ist 55'061'026. * Die Kommas können einfach durch nichts ersetzt werden. * Alle aufeinanderfolgenden Leerschläge müssen durch einen einzigen Strickpunkt '';'' ersetzt werden. Formulieren Sie dazu eine Regular Expression. ===== Oh no, pdf ===== * Übertragen Sie folgende Tabelle in Excel und überprüfen Sie die Summe: {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:ohnopdf.pdf}} * Für diejenigen, die es so richtig mühsam wollen, gleiche Aufgabe aber mit einem "Scan" der PDF-Seite: {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:ohnopdf.png?50}} ===== HTML-Tabelle nach CSV konvertieren ===== * Erstellen Sie eine von Excel lesbare CSV-Datei aus folgender HTML-Tabelle: {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:table1.html}} * Berechnen Sie die Summe aller Einträge. Hinweis: Es gibt viele Möglichkeiten, diese Aufgabe zu lösen. * Oft ist ein Copy-Paste aus dem Browser einfacher, als die Analyse des HTML-Codes. * Es gibt online-Tools, die diese Konversionen machen, googeln Sie danach (auch auf English!) * Das "Problem" sind hier die Tausendertrennzeichen (Apostroph), die müssen wohl oder übel in einem Text-Editor (für Sie Notepad++) ersetzt werden.