Content from Forschungsdaten


Zuletzt aktualisiert am 2024-09-13 | Diese Seite bearbeiten

Geschätzte Zeit: 35 Minuten

Übersicht

Fragen

  • Forschungsdaten?
  • Teilen?
  • F.A.I.R.?

Ziele

  • Eingrenzen was Forschungsdaten sind
  • Reflektieren warum Forschungsdaten geteilt werden sollten
  • Einführung in die F.A.I.R.-Prinzipien

Was ist das?


Forschungsdaten sind die Grundlage wissenschaftlicher Erkenntnisse und können in unterschiedlichen Formen vorliegen.

Im Folgenden werden wir auf einige externe Seiten verweisen, die Ihnen einen Überblick über Forschungsdaten und deren Management geben.

Was zählt zu Forschungsdaten?

Studieren sie folgende Seite von Forschungsdaten.info und machen sie sich Notizen.

Sind das schon Forschungsdaten?

Reflektieren sie kurz über die folgende Frage:

Was macht eine Datei zu Forschungsdaten?

Üblicherweise handelt es sich bei Forschungsdaten um Rohdaten, denn das Filtern, Verarbeiten und Interpretieren der Daten im Rahmen einer Forschungsfrage beeinflusst die Daten und macht sie zu Ergebnisdaten. Zudem sollten die Daten strukturiert und dokumentiert sein, um sie für (sich selbst und) andere Forschende nachvollziehbar zu machen. Eine lose Textdatei mit Notizen oder eine Präsentation sind daher i.d.R. keine Forschungsdaten, sondern eher Ergebnisse oder Dokumentationen. Ob die Daten in einem nachnutzbaren Format vorliegen, ist zentral für die Wiederverwendbarkeit und wird durch die F.A.I.R.-Prinzipien adressiert, die wir bald kennenlernen werden.

Das heißt, Forschungsdaten sind nicht nur die Rohdaten, sondern auch die Metadaten, die Dokumentation und die Software, die zur Erhebung und Analyse der Daten verwendet wurde.

Warum teilen?


In der Vergangenheit wurden Forschungsdaten i.d.R. nicht publiziert, sondern nur die Ergebnisse der Forschung. Das hat sich in den letzten Jahren geändert, und es wird immer wichtiger, auch die Daten zu publizieren, um die Nachvollziehbarkeit und Wiederverwendbarkeit der Forschung zu gewährleisten.

Warum sollten Forschungsdaten geteilt werden?

Die folgende Seite von Forschungsdaten.info diskutiert

Und was hab ich davon?

Überlegen sie sich 3-4 Punkte, die für sie persönlich aus der Publikation von Forschungsdaten resultieren (könnten).

Die folgenden Punkte betreffen sowohl ihre eigene Forschung als auch die Forschung/Daten anderer.

  • Nachvollziehbarkeit: Forschungsergebnisse können überprüft werden
  • Wiederverwendbarkeit: Neue Forschung kann auf bestehenden Daten aufbauen
  • Vergleichbarkeit: Daten können mit anderen Daten verglichen werden
  • Nachhaltigkeit: Daten werden ggf. nicht doppelt erhoben
  • Sichtbarkeit: Forschung wird bekannter und Erhebungsaufwand wertschätzbar
  • Kollaboration: Kontakt zu anderen Forschenden, die an ähnlichen Themen arbeiten
  • Reputation: Wissenschaftliche Zitierbarkeit und Anerkennung von Datenerhebung
  • Förderung: Einige Fördergeber*innen verlangen die Publikation von Daten
  • Lehre: Daten können in der Lehre verwendet werden
  • Open Science: Beitrag zur offenen Wissenschaft und Wissenschaftskommunikation

F.A.I.R.-Prinzipien


Das Teilen von Daten wird durch die F.A.I.R.-Prinzipien unterstützt, die die Auffindbarkeit, Zugänglichkeit, Interoperabilität und Wiederverwendbarkeit von Daten fördern. Dies betrifft sowohl den eigenen Zugriff auf schon geteilte Daten als auch die Veröffentlichung eigener Daten.

Und was sind FAIRe Daten?

Auch dazu gibt es von Forschungsdaten.info eine schöne Seite.

Dokumentation, Dokumentation, Dokumentation

Warum nimmt Dokumentation bei Daten eine so große Rolle ein?

Formulieren sie 3-4 Fragen, die sie sich stellen würden, wenn sie Daten von jemand anderem erhalten und die ohne Dokumentation nicht zu beantworten wären!

Ohne oder bei eingeschränkter Dokumentation können folgende Fragen nicht beantwortet werden.

  • Welche Bedeutung haben die Daten/Werte/…?
  • Wurden die Daten verändert, gefiltert, nachbearbeitet?
  • Welche Rahmenbedingungen gab es bei der Datenerhebung?
  • Welche Software wurde zur Analyse verwendet?
  • Darf ich die Daten weiterverwenden?
  • Wie kann ich die Daten zitieren?
  • Wen kann ich bei Fragen kontaktieren?

Zusammenfassung


Hauptpunkte

  • Forschungsdaten sind nicht nur Rohdaten, sondern auch Metadaten, Dokumentation und Software.
  • Forschungsdaten sollten geteilt werden.
  • Die F.A.I.R.-Prinzipien unterstützen das Teilen von Daten.
  • Dokumentation ist zentral für die Nachvollziehbarkeit und Wiederverwendbarkeit von Daten.

Einordnung im Datenlebenszyklus

Datenlebenszyklus}

Eigentlich in allen Phasen, da eine gute Dokumentation und Strukturierung der Daten die Nachvollziehbarkeit und Wiederverwendbarkeit in allen Phasen des Lebenszyklus unterstützt.

  • Planung: Dokumentation der Forschungsfrage und der zu verwendenden Daten/Quellen
  • Erhebung: Dokumentation der Rahmenbedingungen und der Datenerhebung
  • Analyse: Dokumentation der Analyse und der Software
  • Publikation: Teilen der Daten und Dokumentation
  • Archivierung: Langfristige Sicherung und Zugänglichkeit der Daten
  • Nachnutzung: Nachvollziehbarkeit und Wiederverwendbarkeit der Daten

Content from Finden und Zitieren


Zuletzt aktualisiert am 2024-09-13 | Diese Seite bearbeiten

Geschätzte Zeit: 50 Minuten

Übersicht

Fragen

  • Wo?
  • Wie?
  • Wer?

Ziele

  • Öffentliche Repositorien für Forschungsdaten
  • Gezielte Suche nach Forschungsdaten
  • Zitieren von Forschungsdaten

Um Forschungsdaten findbar und zugänglich zu machen, werden diese in speziellen Repositorien und Datenbanken abgelegt. Hierbei wird unterschieden in fachspezifische und allgemeine Repositorien. Die Datenbanken und Repositorien sind in der Regel öffentlich zugänglich und bieten die Möglichkeit, Daten zu suchen, zu finden und herunterzuladen.

Das Suchen und Finden von Forschungsdaten ist jedoch nicht immer so einfach, wie es klingt. Daher gibt es einige Tipps und Tricks, die die Suche erleichtern können.

Zudem muss geprüft werden, ob die Daten in einer Form vorliegen, die eine Wiederverwendung ermöglicht. Auch Lizenzfragen sind zu klären.

Final ist es wichtig, die gefundenen Daten korrekt zu zitieren, um die Quelle zu kennzeichnen und Wiederverwendung sichtbar zu machen.

All diese Punkte werden in einem Lernmodul der Friedrich-Alexander-Universität Erlangen-Nürnberg näher beleuchtet, welches im Folgenden durchgearbeitet werden soll

Lernmodul “Forschungsdaten suchen & nachnutzen”

Arbeiten sie sich durch das Lernmodul der Friedrich-Alexander-Universität Erlangen-Nürnberg.

Bitte auch die dortigen Wissenstests an den Seitenenden durchführen!

Zusammenfassung


Hauptpunkte

  • Forschungsdaten sind in speziellen Repositorien und Datenbanken abgelegt, i.d.R. öffentlich zugänglich.
  • Es gibt fachspezifische und allgemeine Repositorien.
  • Aufgrund der Vielzahl an Repositorien und Datenbanken ist die Suche nach Forschungsdaten nicht immer einfach und verlangt eine ausdauernde Recherche.
  • Vorliegende Datenformate und vorhandene Software(kenntnisse) müssen geprüft werden, um eine Wiederverwendung zu ermöglichen.
  • Lizenzen müssen die Wiederverwendung erlauben.
  • Korrekte Zitation ist zentral in wissenschaftlicher Praxis.

Einordnung im Datenlebenszyklus

Datenlebenszyklus}

Datenrecherche und Zitation sind vorrangig zu Beginn und am Ende des Datenlebenszyklus wichtig.

  • Planung: Schlagworte etc. für spätere Suche festlegen
  • Erhebung: Wiederverwendung von Daten
  • Publikation: Zitation von verwendeten Daten
  • Archivierung: Festlegung von Metadaten, Identifiern und Lizenzen, um Wiederverwendung zu ermöglichen
  • Nachnutzung: Daten/Quellen identifizieren, bewerten und einordnen

Content from Digitale Daten


Zuletzt aktualisiert am 2024-09-13 | Diese Seite bearbeiten

Geschätzte Zeit: 60 Minuten

Übersicht

Fragen

  • Wie wird … gespeichert?
  • Was gibt es für Probleme?
  • Worauf muss man achten?

Ziele

  • Verständnis wie verschiedene Informationstypen digital repräsentiert sind
  • Wissen um die Grenzen und Schwierigkeiten von Informationsspeicherung
  • Lösungsstrategien für häufige Daten(import)probleme

Grundlegende Formen von Information sind Texte, Zahlen, Zeiten, Farben (für Bild und Video) und Audio. Wenn wir an diese denken, haben wir meistens eine Vorstellung von einem physischen Medium wie einem Blatt Papier etc., auf dem diese gespeichert sind. Eine solche Form der Informationsspeicherung wird als analoge Speicherung bezeichnet.

In Computern wird Information in Form von digitalen Daten gespeichert. Digital bedeuted, vereinfacht gesagt, dass die Information in Form von Zahlen gespeichert wird, die wiederum in Form von elektrischen Signalen (z.B. “Strom an oder aus”) repräsentiert werden. Letzteres ist die Grundlage für die Funktionsweise von Computern.

Das bedeutet, dass alle Informationen, die wir in Computern speichern, in Form von Zahlen repräsentiert werden muss. Eine weitere wichtige Eigenschaft von digitalen Daten ist, dass sie in diskreten Einheiten gespeichert werden, also i.d.R. in Form von ganzen Zahlen.

Im Folgenden werden wir uns mit den verschiedenen Arten von Information und deren digitaler Repräsentation beschäftigen.

Text


Text ist die einfachste Form von digitalen Daten. Text wird in Computern in Form von Zeichenketten gespeichert, das heißt einer Abfolge von Zeichen. Jedes Zeichen wird dabei durch eine Zahl repräsentiert, wobei die Zuordnung von Zeichen zu Zahlen durch eine Zeichenkodierung festgelegt wird. Letztere ist eine Tabelle, die jedem Zeichen eine Zahl zuordnet.

Die bekannteste und eine der ersten ist die ASCII-Kodierung (American Standard Code for Information Interchange), welche 128 Zeichen umfasst und im Folgenden dargestellt ist.

ASCII
ASCII-Kodiertabelle. Nichtsichtbare Steuerzeichen sind in eckigen Klammern angegeben.1

Wenn wir die Tabelle betrachten, fällt uns auf, dass nicht nur Buchstaben oder Ziffern, sondern auch Sonderzeichen und Steuerzeichen (z.B. Zeilenumbruch) enthalten sind. Zudem fehlen Umlaute und Sonderzeichen, die in anderen Sprachen verwendet werden.

Daher wurden im Laufe der Zeit weitere Zeichenkodierungen entwickelt, die mehr Zeichen umfassen. Hier ein paar Beispiele:

  • latin1 (ISO-8859-1): 256 Zeichen, enthält Umlaute und Sonderzeichen für westeuropäische Sprachen
  • latin2 (ISO-8859-2): 256 Zeichen, enthält Umlaute und Sonderzeichen für osteuropäische Sprachen
  • GB2312: 6.763 Zeichen, enthält chinesische Schriftzeichen
  • UTF-8: 1.112.064 Zeichen, enthält fast alle Schriftzeichen der Welt

Hierbei ist zu beachten, dass die erweiterten Zeichenkodierungen rückwärtskompatibel sind, d.h. die Zahlen-Buchstaben-Kodierungen der ersten 128 Zahlen entsprechen i.d.R. der “alten” ASCII-Kodierungen.

Aktuell ist UTF-8 die am weitesten verbreitete Zeichenkodierung, da sie fast alle Schriftzeichen der Welt umfasst und daher für die meisten Anwendungsfälle geeignet ist. Diese Kodierung wird auch von den meisten neueren Betriebssystemen und Anwendungen standardmäßig verwendet.

Kodierungsprobleme

Was kann passieren, wenn ein Text mit latin1-Kodierung abgespeichert wird (also in Zahlen umgewandelt wird) und anschliessend mit latin2-Kodierung gelesen wird (also die Zahlen wieder mit Buchstaben ersetzt werden)?

Es werden falsche Zeichen angezeigt, da die Zahlen-Buchstaben-Zuordnung nicht übereinstimmt.

Das Problem mit den verschiedenen Zeichencodierungen ist, dass beim Öffnen einer Datei mit einer anderen Codierung als der, in der sie gespeichert wurde, die Zeichen falsch dargestellt werden. Daher ist es wichtig, die Codierung einer Datei zu kennen, um sie korrekt lesen zu können. Ein deutliches Zeichen, dass die falsche Codierung verwendet wird, ist, wenn anstelle von Umlauten oder Sonderzeichen nur Fragezeichen oder andere Zeichen angezeigt werden, wie in folgendem Bild.

Kodierungsproblem
Kodierungsproblem

Dies tritt häufig auf, wenn man mit älteren Dateien arbeitet, was gerade im wissenschaftlichen Bereich in der Datennachnutzung von Daten immer wieder vorkommt.

Hinweis

In diesem Fall, muss man händisch die Codierung ändern, um den Text korrekt darzustellen. Hier bleibt häufig nichts weiter übrig, als die Codierung auszuprobieren, bis der Text korrekt dargestellt wird. Dabei ist es hilfreich, über den Ursprung der Datei Bescheid zu wissen.

Hier kommt wieder die Dokumentation von Daten ins Spiel!

Zeilenumbruch im Text

Ein weiteres Problem, das beim Lesen und Verarbeiten von Textdateien auftreten kann, ist der Zeilenumbruch, also das Zeichen, das angibt, dass eine neue Zeile beginnt. In aktuellen Betriebssystemen wird der Zeilenumbruch unterschiedlich abgespeichert:

  • Windows: \r\n (zwei Zeichen: Carriage Return und Line Feed)
  • Linux: \n (ein Zeichen: Line Feed)
  • MacOS: \r oder \n, je nach Alter des Betriebssystems (Carriage Return oder Line Feed)

Dies kann dazu führen, dass Textdateien auf einem Betriebssystem, auf dem sie nicht erstellt wurden, nicht korrekt dargestellt oder verarbeitet werden können.

Hinweis

Texteditoren wie Notepad++ oder Visual Studio Code können automatisch die Zeilenumbrüche in Textdateien erkennen und korrekt darstellen. Auch ist es dort möglich, die Zeilenumbrüche in einem Textdokument zu konvertieren, d.h. von einem Format in ein anderes zu ändern.

Notepad++
Im Notepad++ läßt sich der Zeilenumbruch durch Doppelklick anpassen. Gleiches gilt für das Textencoding (hier UTF-8).

Zahlen


Bei der Darstellung von Zahlen werden zwei Formen unterschieden: Ganzzahlen und Fließkommazahlen.

Ganzzahlen

Ganzzahlen, also 1, 13, 42, oder 987654321, werden in Computern durch ihre Zerlegung in 2er-Potenzen gespeichert. Zum Beispiel zerlegt sich 13 in 8+4+1, also 2^3 + 2^2 + 2^0. Im Computer selbst, können nur binäre Zustände, wie Strom an oder aus etc., gespeichert werden. Daher wird kodiert, ob eine 2er-Potenz in der Zahl enthalten ist oder nicht. Hieraus ergibt sich eine Binärdarstellung der Zahl. Im Beispiel der 13 also 1101, wobei die 1en die enthaltenen 2er-Potenzen repräsentieren und die Zahl wird (wie bei Dezimalzahlen auch) von rechts nach links gelesen, wobei die rechte Stelle 2^0 repräsentiert. Somit entspricht die Binärdarstellung 1101 der Dezimalzahl 13, da 2^3 + 2^2 + 2^0 = 8 + 4 + 1 = 13. Dies erlaubt die Speicherung beliebiger Ganzzahlen, solange genügend 2er-Potenzen zur Verfügung stehen, welche durch die maximale Länge der Binärdarstellung begrenzt ist.

Text => Ganzzahl => Binär

Da jedem Buchstaben über die Zeichenkodierung eine Zahl zugewiesen wird, und Ganzzahlen in Binärzahlen umgewandelt werden können, kann auch ein Text in Binärzahlen umgewandelt und gespeichert werden.

Binärzahlen

Normalerweise werden Zahlen in Dezimaldarstellung verwendet, also mit den Ziffern 0-9. Zahlen werden von rechts nach links gelesen, wobei jede Stelle eine 10er-Potenz repräsentiert und die Ziffer der jeweiligen Stelle der Faktor der entsprechenden 10er-Potenz ist. Hier ein Beispiel zur Illustration:

312 = 300 + 10 + 2= 3*100 + 1*10 + 2*1 = 3*10^2 + 1*10^1 + 2*10^0 = 312

Binärzahlen hingegen verwenden nur die Ziffern 0 und 1, folgen ansonsten aber den gleichen Regeln wie Dezimalzahlen. Sie werden also auch von recht nach links gelesen, wobei jede Stelle eine 2er-Potenz repräsentiert und die Ziffer der jeweiligen Stelle der Faktor der entsprechenden 2er-Potenz ist. Hier ein Beispiel zur Illustration:

1101 = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 8 + 4 + 0 + 1 = 13

Wie auch bei Dezimalzahlen werden führende 0en meistens weggelassen, da sie keinen Einfluss auf den Wert der Zahl haben. Zudem können auch Binärzahlen addiert, subtrahiert, multipliziert und dividiert werden.

Die Binärdarstellung von Zahlen ist in der Informatik von großer Bedeutung, da sie die Grundlage für die digitale Speicherung und Verarbeitung von Zahlen in Computern bildet.

Frage

Welche Dezimalzahl repräsentiert die Binärzahl 1010?

Die 2er-Potenzen sind

  • 2^0 = 1
  • 2^1 = 2
  • 2^2 = 4
  • 2^3 = 8

Die Binärzahl 1011 entspricht der Dezimalzahl 10, da

1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 8 + 0 + 2 + 0 = 10.

Bits und Bytes

Einzelne “01 Ziffern” einer Binärzahl werden bit genannt, was für “binary digit” steht.

Kolonnen von 8 Bits werden Byte genannt, was für “by eight” steht.

Ein Byte kann also 256 verschiedene Werte annehmen, da 2^8 = 256 verschiedene 01 Kombinationen mit 8 Stellen möglich sind.

Um Daten im Computer speichern, verwalten und abrufen zu können, ist es unumgänglich schon im Vorfeld zu wissen, wie viele Bits und Bytes für die jeweilige Information verwendt wurde. Andernfalls könnten zu wenige oder zuviele Bits gelesen werden, was zu einem falschen Ergebnis führen würde. Oder noch schlimmer: Datenoperationen überlappen, das heisst das Speichern einer Information überschreibt (ggf. auch nur teilweise) eine andere Information.

Um dies zu vermeiden und die Datenintegrität zu gewährleisten, wurden Standards festgelegt, welche die Anzahl der Bits und Bytes für verschiedene Datentypen festlegen. Hier ein paar Beispiele:

  • int (Integer): 4 Bytes (32 Bit)
  • long (Long Integer): 8 Bytes (64 Bit)
  • char (Character): 1 Byte (8 Bit)
  • float: 4 Bytes (32 Bit) - für Gleitkommazahlen
  • double: 8 Bytes (64 Bit) - für Gleitkommazahlen

Um negative Zahlen darstellen zu können, wird in der Regel das erste Bit als Vorzeichenbit verwendet. Dieses schränkt die Anzahl der darstellbaren Zahlen ein, da nur noch 7 Bit (bzw. 1 Bit weniger) für die eigentliche Zahlenrepräsentation zur Verfügung stehen.

Überlaufproblem

Da die Anzahl der Bits, die zur Speicherung einer Zahl zur Verfügung stehen, begrenzt ist, kann es zu einem Überlauf kommen. Ein Überlauf tritt auf, wenn das Ergebnis einer Berechnung mehr Stellen benötigt als die maximale Anzahl an Bits, die zur Speicherung zur Verfügung stehen. Hierbei werden die führenden Stellen einfach abgeschnitten, was zu einem falschen Ergebnis führt.

Beispiel unter der Annahme von 3 Bit Zahlendarstellung:

 7 + 3 = 111 + 011 = (1)010 (Dezimalzahl 10, aber 4 Bit nötig und nur 3 vorhanden > Überlauf)
                   = 010 (auf letzte 3 Bit reduzierte Speicherdarstellung)
                   = 2 (entsprechende Dezimalzahl, falsches Ergebnis)

Diese Problem ist heutzutage jedoch durch die Verwendung von 32 oder 64 Bit Zahlen in modernen Computern nur noch selten relevant.

Fließ- oder Gleitkommazahlen

Kommazahlen wie 0,0012 können auf verschiedene Arten geschrieben werden, z.B.

  • als Bruch 12/10000
  • als Dezimalzahl 0,0012
  • als wissenschaftliche Notation 1.2e-3 oder 1.2E-3

Die wissenschaftliche Notation kann auf zwei Arten interpretiert werden. Zum einen als mathematische Formel “1,2 * 10^-3 = 1,2 * 0,001 = 0,0012”. Alternativ kann auch herauslesen, dass das Komma in der Zahl 1.2 um 3 Stellen nach links verschoben werden muss, um die eigentliche Zahl 0,0012 zu erhalten.

Letztere Interpretation ist die, die in Computern verwendet und als Gleit- oder Fließkommazahl bezeichnet wird. Hierbei wird die Zahl in zwei Teile zerlegt: die Mantisse und den Exponenten. Die Mantisse enthält die eigentliche Zahl, also 1.5, 3.14159, oder 42.0, und der Exponent gibt (vereinfacht gesagt) an, um wie viele Stellen das Komma nach links oder rechts verschoben werden muss, um die eigentliche Zahl zu erhalten. Der Trick ist nun, dass sowohl Mantisse als auch Exponent als Ganzzahlen gespeichert werden können, für die wir schon eine Umrechnung in Binärzahlen kennen.

Dies funktioniert sehr gut für Zahlen, die sich als Potenzen von 10 darstellen lassen, wie 0,0012 = 1.2 * 10^-3. Für Zahlen, die sich nicht als Potenzen von 10 darstellen lassen, wie 1/3 = 0.3333333333333333…, kann es zu Rundungsfehlern kommen, da der Computer nur eine begrenzte Anzahl von Stellen für die Mantisse und den Exponenten speichern kann, da beide als Ganzzahl gespeichert werden. Dieses Problem ist in folgender Grafik verdeutlicht, indem verschiedene sehr kurze Mantissenlängen dargestellt sind.

floating point precission
Genauigkeit von Gleitkommazahlen hängt sehr stark von der Mantissenlänge (Anzahl Bits) ab und sinkt mit steigendem Abstand zu 0.2

Rundungsfehler beim Rechnen mit Fließkommazahlen

Da der Computer nur eine begrenzte Anzahl von Stellen für die Mantisse und den Exponenten speichern kann, kann es zu Rundungsfehlern kommen, wenn mit Fließkommazahlen gerechnet wird. Hier ein Beispiel unter Verwendung der Programmiersprache R.

Rundungsfehler in R
Das Ergebnis von 1/3 wird in den hinteren Stellen ungenau und das Ergebnis vom Quadrat der Wurzel von 2 ist nicht, wie erwartet, exakt 2.

Frage

Überlegen sie, wo derartige Rundungsprobleme zu Problemen führen könnten, sodass in diesen Bereichen mit anderen Datentypen gearbeitet werden sollte.

Ein Beispiel für ein Problem, bei dem Rundungsfehler zu Problemen führen können, ist die Berechnung von Zinsen.

Auch z.B. zur Berechnung von Marsmissionen oder anderen wissenschaftlichen Berechnungen, bei denen sehr genaue Ergebnisse erforderlich sind, werden andere Datentypen bzw. mathematische Tricks verwendet.

Sprachabhängige Zahlendarstellung

Ein häufiges Problem bei der Verarbeitung von Zahlen ist die sprachabhängige Darstellung von Zahlen. In Deutschland (und vielen Ländern Westeuropas) wird die Zahl 1000 als 1.000,00 geschrieben, während in den USA die gleiche Zahl als 1,000.00 geschrieben wird.

Das heisst das verwendete Trennzeichen für die “Nachkommastellen” und die Tausenderstellen ist unterschiedlich bzw. umgekehrt.

Solange Zahlen direkt in Binärform gespeichert und eingelesen werden, ist dies kein Problem, da nur die Darstellung der Zahl, nicht aber die Zahl selbst, von der eingestellten Benutzersprache abhängt.

Sobald jedoch Zahlen in Textform eingelesen oder ausgegeben werden, kann es zu Problemen kommen, wenn die Zahlen in einem anderen Format gespeichert sind, als das, in dem sie eingelesen werden sollen.

Wenn sie z.B. eine Datei mit der amerikanischen Notation 1,000 mit einer “deutschen” Software einlesen, wird die Zahl als 1 gelesen, da die deutsche Software das Komma als Dezimaltrennzeichen interpretiert.

Hinweis

Wenn sie fremde textbasierte Daten einlesen, sollten sie diese immer auf das verwendete Zahlenformat überprüfen, um sicherzustellen, dass die Zahlen korrekt eingelesen werden.

Alle Textdatenimportfunktionen in Programmiersprachen (wie Python oder R) und Datenverarbeitungssystemen (wie MS Excel) bieten die Möglichkeit, das zu importierende Zahlenformat anzugeben, um solche Probleme zu vermeiden.

Aber sie selbst müssen daran denken!

Zeit


Die Zeit wird in Computern als Anzahl von (Milli)Sekunden seit einem festgelegten Zeitpunkt gespeichert.

Dieser Zeitpunkt ist in der Regel der 1. Januar 1970 um 00:00:00 Uhr (UTC), auch als Unix-Zeit bekannt. Diese Darstellung hat den Vorteil, dass die Zeit als Ganzzahl gespeichert werden kann, was die Speicherung und Verarbeitung vereinfacht und Rundungsfehler vermeidet.

Jahr-2038-Problem

Ein Problem bei der Speicherung von Zeit als Ganzzahl ist das Jahr-2038-Problem. Lesen sie diesen Wikipedia-Artikel und erklären sie, warum es auftritt und welche Auswirkungen es haben könnte.

Das Jahr-2038-Problem tritt auf, weil die Unix-Zeit als vorzeichenbehaftete 32-Bit-Ganzzahl gespeichert wird.

Das heisst nicht alle 32 Bit sind für die Zahl selbst reserviert, sondern das erste Bit gibt das Vorzeichen an. Da die Unix-Zeit den 1. Januar 1970 als Nullpunkt hat, wird die Zeit in Sekunden seit diesem Zeitpunkt gespeichert. Da eine 32-Bit-Ganzzahl nur 2^32 = 4.294.967.296 verschiedene Werte speichern kann, wird die Unix-Zeit am 19. Januar 2038 um 03:14:07 Uhr UTC den Wert 2.147.483.647 erreichen. Da die Unix-Zeit als vorzeichenbehaftete Ganzzahl gespeichert wird, wird der Wert am 19. Januar 2038 um 03:14:07 Uhr UTC auf -2.147.483.648 springen, was zu einem Überlauf führt. Dieser Überlauf führt dazu, dass die Zeit wieder bei -2.147.483.648 beginnt, was dem 13. Dezember 1901 um 20:45:52 Uhr UTC entspricht.

Farben


Farben werden in Computern z.B. als RGB-Werte gespeichert, also als Kombination von Rot-, Grün- und Blauanteilen des jeweiligen Lichtes. Jeder dieser Anteile wird als Zahl zwischen 0 und 255 gespeichert, wobei 0 für keinen und 255 für den maximalen Anteil des jeweiligen Farbtons steht. Das es sich um “Lichtfarben” handelt, wird somit die Farbe Weiß als (255, 255, 255) und die Farbe Schwarz als (0, 0, 0) gespeichert.

Da es sich um Ganzzahlen handelt, können diese auch in Binärform gespeichert werden, wobei die 8 Bit für jeden Farbton die Binärdarstellung der Zahl zwischen 0 und 255 darstellen. Aufgrund der diskreten Werte für die Farbanteile sind Farbverläufe nicht stufenlos sondern nur in diskreten Schritten möglich.

Neben RGB gibt es auch andere Farbmodelle, wie z.B. CMYK (Cyan, Magenta, Yellow, Key) für den Druck oder HSV (Hue, Saturation, Value) für die Farbdefinition. Auch hier werden die Farben als Zahlen gespeichert, wobei die Umrechnung zwischen den verschiedenen Farbmodellen durch mathematische Formeln erfolgt.

Farbkodierung liefert die Grundlage für Bild- und Videodaten, die selbst wieder in verschiedensten Formaten gespeichert werden können.

Frage

Wenn sie im Farbkasten Rot, Grün und Blau mischen, entsteht i.d.R. nicht weiß, sondern ein Braunton. Warum ist das so?

Die Farben im Farbkasten sind Pigmente, die das Licht absorbieren und nur bestimmte Farben reflektieren. Wenn sie Rot, Grün und Blau mischen, absorbieren sie fast alles Licht, sodass die Mischung dunkel erscheint.

In folgendem Bild sehen sie, dass die unterschiedlichen Farbmodelle nur Teile des vom Menschen sichtbaren Farbraums abdecken.

RGB und CMYK Farbraeume
Darstellbare Farben im RGB- (gelb) und CMYK-Farbraum (blau) im Vergleich zum sichtbaren Bereich des Menschen 3.

Referenz

Die Diskretisierung der Farbwerte kann zu Farbverlust führen, wenn die Farben in einem anderen Farbmodell gespeichert und wieder in RGB umgewandelt werden.

Hinweis

Daher sollte die Umwandlung zwischen den Farbmodellen nur dann erfolgen, wenn es unbedingt notwendig ist, am besten nach der Bildbearbeitung.

Für weiterführende Informationen rund um die Farbmodelle RGB und CMYK, ihrer Unterschiede und Umwandlung empfehlen wir folgende Seite.

Audio


Auch Audiodaten werden als Zahlen gespeichert, wobei die Amplitude des Schallsignals als Zahl gespeichert wird. Die Amplitude wird in der Regel als Zahl zwischen -1 und 1 gespeichert, wobei -1 für den minimalen und 1 für den maximalen Schalldruck steht. Da es sich um eine kontinuierliche Größe handelt, wird die Amplitude in der Regel als Gleitkommazahl gespeichert, um eine möglichst genaue Repräsentation des Schallsignals zu erhalten.

Zusammenfassung


Hauptpunkte

  • Jedwede Information wird i.d.R. durch Ganzzahlen repräsentiert
    • Text via Zeichenencodingstabellen
    • Gleitkommazahlen z.B. durch Mantisse und Exponent
    • Zeit z.B. als Anzahl von Sekunden seit einem festgelegten Zeitpunkt
    • Farben z.B. durch RGB-Werte
  • Ganzzahlen können in Binärform gespeichert und verarbeitet werden
    • dabei in 2er-Potenzen zerlegt
    • Interpretation analog zu Dezimalzahlen (rechts nach links, …)
    • Bit = eine “Ziffer” einer Binärzahl (0 oder 1)
    • 8 Bit = 1 Byte
    • Anzahl der Bits bestimmt die maximal darstellbare Zahl (Überlaufproblem)
  • Probleme digitaler Informationsrepräsentation
    • Überlaufproblem bei zu großen Zahlen
    • Diskretisierung von kontinuierlichen Größen
      • Rundungsfehler bei Gleitkommazahlen
      • Verlust von Genauigkeit bei zu kleinen/großen Zahlen
    • Kodierungsprobleme bei Textimport
      • Sprachabhängige Darstellung von Zahlen
      • Unterschiedliche Zeichenencodings

Einordnung im Datenlebenszyklus

Datenlebenszyklus
In welchen Phasen im Datenlebenszyklus sehen sie obige Punkte als besonders wichtig an?

Das Wissen um die digitale Repräsentation von Informationen ist immer dann zentral, wenn Daten importiert oder exportiert werden, um sicherzustellen, dass die Daten korrekt übertragen und gespeichert werden.

  • Planung: Festlegung von Datenformaten und -strukturen
  • Erhebung: Korrekte Interpretation von Daten
  • Archivierung: Export von Daten in geeigneten Formaten
  • Nachnutzung: korrekter Datenimport und -export

  1. Quelle - Wikimedia Commons - 07.08.2024↩︎

  2. Quelle - Roland Illig - Wikimedia Commons - 07.08.2024↩︎

  3. Quelle - aufkleberdrucker24.de - 12.09.2024↩︎

Content from Dateiformate


Zuletzt aktualisiert am 2024-11-07 | Diese Seite bearbeiten

Geschätzte Zeit: 40 Minuten

Übersicht

Fragen

  • Binär vs. Text?
  • Dateiformate?
  • Was für was?

Ziele

  • Verständnis dafür wie Daten gespeichert werden
  • Wissen um gängige Dateiformate zur Datenhaltung
  • Überblick welche Formate für welche Daten und Zwecke geeignet sind

Um Daten zu speichern oder weitergeben zu können, müssen sie in einer Datei abgelegt werden. Damit die Daten auch später wieder gelesen und verarbeitet werden können, muss dies in einer festgelegten Art und Weise geschehen, was durch das Dateiformat bestimmt wird. Damit man später noch weiss, welches Dateiformat verwendet wurde, wird dieses durch eine entsprechende Dateiendung (engl. file extension) hinterlegt. Die Dateiendung ist also lediglich ein Hinweis darauf, in welchem Format die Daten abgelegt sind, hat darüber hinaus aber keine weitere Bedeutung.

Binär vs. Text


Dateien können entweder in binärer oder Textform abgelegt werden. Dazu müssen wir uns erinnern, dass jedwede Information in einem Computer als Ganzzahl kodiert und diese in Binärzahlen, also einer Abfolge von Bits (0 und 1), repräsentiert und verwaltet werden.

Nun gibt es zwei Möglichkeiten, wie diese computerinterne Datenrepräsentation in einer Datei abgelegt werden kann.

Am kompaktesten und effizientesten ist es, die interne Binärdatendarstellung direkt als Binärdaten in einer Datei abzulegen, also als eine Abfolge von 0 und 1. Dieses wird als sogenannte binäre Datei bezeichnet. Dies hat den Vorteil, dass die Daten sehr schnell und effizient gelesen und geschrieben werden können, da keine Umwandlung notwendig ist. Allerdings sind binäre Dateien für Menschen nicht lesbar, da sie nur aus einer Abfolge von 0 und 1 bestehen, sodass keine Interpretation oder Inspektion der Daten möglich ist. Zudem sind binäre Dateien nicht oder nur bedingt portabel, da sie von der internen Datenrepräsentation des Computers und des verwendeten Anwendungsprogramms abhängen und daher nicht ohne weiteres auf anderen Systemen oder mit anderer Software gelesen werden können.

Daher werden binäre Dateiformate in der Regel nur für spezielle Anwendungen verwendet, bei denen es auf Geschwindigkeit und Effizienz ankommt, oder wenn die Daten nicht von Menschen gelesen werden müssen. Zudem sind binäre Dateiformate in der Regel spezialisiert und proprietär1, d.h. sie sind nur für bestimmte Anwendungen oder Programme geeignet und können nicht ohne weiteres von anderen Programmen gelesen oder verarbeitet werden.

Aufgrund dessen sind binäre Dateiformate in der Regel nicht für den allgemeinen Datenaustausch oder die Langzeitarchivierung geeignet.

Stattdessen werden Daten, die ausgetauscht oder archiviert werden sollen, in der Regel in Textform abgelegt. Hierbei werden die internen Binärdaten in eine menschlich lesbare Form umgewandelt, z.B. in Buchstaben, Zahlen oder Sonderzeichen, und als Text in einer Datei abgelegt. Dieser muss nicht zwingend in einer menschenlesbaren Form sein, sondern kann auch in einer maschinenlesbaren Form abgelegt werden, z.B. als strukturierte Daten oder in einer speziellen Syntax.

Grundlegend ist aufgrund der Textform jedoch gesichert, dass die Daten in einer Form abgelegt sind, die unabhängig von der computerinternen Datenrepräsentation ist und daher portabel und unabhängig von der verwendeten Software oder dem Betriebssystem ist.

Ist das binär oder textbasiert?

Um zu überprüfen, ob eine Datei binär oder textbasiert ist, können Sie die Datei einfach mit einem Texteditor öffnen. Dies ist mit jeder Datei möglich, unabhhängig von der Dateiendung oder dem Dateiformat!

Wenn die Datei text-basiert ist, können Sie den Inhalt lesen und bearbeiten. Falls nicht, wird der Inhalt der Datei als unleserlicher Text oder als Zeichenfolge von Sonderzeichen angezeigt, wie in folgendem Beispiel.

Binärdatei im Texteditor
JPEG Bilddatei in einem Texteditor geöffnet zeigt nur wirre Sonderzeichen. Dies deutet auf ein binäres Dateiformat hin.

Sie sind dran ..

Öffnen Sie in einem Texteditor ihrer Wahl eine MS Excel Datei und eine PDF Datei.

Was sehen Sie? Sind die Dateiformate binär oder textbasiert?

Die Excel-Datei wird als unleserlicher Text oder als Zeichenfolge von Sonderzeichen angezeigt, da sie im binären XLSX-Format gespeichert ist. Letzteres ist eigentlich ein komprimiertes ZIP-Archiv, das verschiedene Dateien und Ordner enthält, die die Tabellenkalkulation und die Daten enthalten.

Die PDF-Datei wird je nach Inhalt als Mix aus lesbarem Text und Sonderzeichen angezeigt. Das PDF-Format ist ein Hybridformat, in dem bestimmte Inhalte (wie Bilder) in einem binären Format gespeichert sind, während der Text z.T. in einer menschenlesbaren Form abgelegt ist.

Doch dazu später mehr…

Standard vs. Spezialformat

Die Wahl des Dateiformats hängt stark von der Art der Daten und ihrer Verwendung ab. Für den allgemeinen Datenaustausch und die Langzeitarchivierung sind Textformate in der Regel besser geeignet, da sie portabel, unabhhängig und zukunftssicher sind. Für den internen Gebrauch oder spezielle Anwendungen können jedoch auch binäre Formate sinnvoll sein, da sie schneller und effizienter sind und spezielle Funktionen oder Eigenschaften bieten können.

Daher sollten Rohdaten und Metadaten in einem Standardformat abgelegt werden, das von verschiedenen Programmen und Systemen gelesen und verarbeitet werden kann. Zudem sollten am Ende des Forschungsprozesses zur Publikation die finalen, verarbeiteten Daten in Standardformaten abgelegt werden, um die Nachnutzung und Langzeitarchivierung zu erleichtern.

Während des Forschungsprozesses können jedoch auch spezielle oder proprietäre Formate verwendet werden, um die volle Leistungsfähigkeit und Funktionalität der verwendeten Software auszuschöpfen.

Im Folgenden werden wir einige der gängigsten Dateiformate für den Datenaustausch und die Langzeitarchivierung vorstellen und ihre Verwendungszwecke und Eigenschaften erläutern.

Nur Text


Die einfachste Möglichkeit beliebige Information zu speichern ist in Form von unformatierten Textdateien. Diese enthalten nur eine texttuelle Repräsentation der Information in Form von Buchstaben, Zahlen und Sonderzeichen, und haben darüber hinaus keine spezielle Struktur oder Formatierung.

Derartige Dateien werden i.d.R. mit der Dateiendung .txt versehen und können mit jedem Texteditor geöffnet und bearbeitet werden. Hierbei ist zu beachten, das MS Word oder andere Textverarbeitungsprogramme nicht als Texteditor geeignet sind, da sie zusätzliche Formatierungen und Metadaten in die Datei schreiben, die den reinen Textinhalt verfälschen.

Geeignete Texteditoren sind z.B.

  • Notepad++ (Windows),
  • TextEdit (Mac),
  • gedit (Linux) oder
  • Microsoft Windows Editor.

Wenn die Textdatei in einer strukturierten Form vorliegt, d.h. wenn die Information in Zeilen und Spalten organisiert oder durch spezielle Schlüsselwörter oder Trennzeichen strukturiert ist, dann spricht man von einem textbasiertem Dateiformat.

Formattierter Text


Markdown

Dateiendungen: .md, .markdown

Markdown ist eine einfache Auszeichnungssprache für Textdateien. Das heisst, einzelne Textabschnitte können mit speziellen Zeichen oder Schlagworten versehen werden, um ihre Formattierung zu bestimmen. Die Formatierung selbst geschieht in einem nachfolgenden Verarbeitungsschritt, bei dem der formatierte Text in einem geeigneten Format, z.B. HTML, PDF, .., abgespeichert wird.

Markdownbeispiel
Beispiel einer Markdown-Datei (links) und einer gerenderten Ausgabe (rechts).2

Studieren sie folgende Webseite, in der Markdown und seine Anwendungen erklär werden:

Da die Formatierung von Markdown immer in einem separaten Schritt erfolgt, ist es sinnvoll einen Editor zu verwenden, der die Formatierung in Echtzeit anzeigt. Im Rahmen des Kurses (und ggf. auch darüber hinaus) empfehlen wir daher den Onlineeditor dillinger.io, welcher ohne Registrierung oder Installation genutzt werden kann.

Aufgabe

Verwenden sie den Onlineeditor dillinger.io um ein einfaches Markdown-Dokument zu erstellen.

Versuchen sie darin einige der kleinen “Best Practice” Tipps, welche auf der Webseite Markdown Guide - Basic Syntax vorgestellt werden.

Referenz

Markdown wird sehr häufig für Dokumentationen, Readme-Dateien und auch für einfache Webseiten verwendet. (Auch diese Webseite wurde basierend auf Markdown erzeugt!)

In diesem Kurs werden wir daher ab sofort Markdown für (fast) alle Dokumentationen verwenden, um dies zu üben.

Sie können daher dillinger.io schon direkt zu ihren Lesezeichen im Browser hinzufügen.

.md Dateiendung mit Texteditor verknüpfen

Dateiendungen dienen vorrangig dazu, dass das Betriebsystem automatisch erkennt, mit welchem Programm eine ausgewählte Datei geöffnet werden soll. Für Markdowndateien mit der Dateiendung .md ist in den meisten Betriebssystemen keine solche Assoziation mit einem “Standardprogramm” direkt vorhanden. Daher sollte diese eingerichtet werden, wenn man häufiger, wie in diesem Kurs, mit Markdown Dateien arbeiten möchte.

Aufgabe:

  • Exportieren sie ihre Markdown-Spielerei aus der letzten Aufgabe aus dillinger.io heraus
    • dazu oben rechts “Export as” > “Markdown” auswählen
  • Speichern sie die Datei auf ihrem Computer an einem Ort ihrer Wahl (den sie wiederfinden…)
  • Setzen sie als Standardprogramm zum Öffnen von Markdown-Dateien ihren Texteditor
  • Versuchen sie nun die heruntergeladene Datei zu öffnen (z.B. via Doppelklick)
    • Ziel ist es, das nun ihr installierter Texteditor die Markdown-Datei anzeigt

HTML

Dateiendungen: .html, .htm

Ähnlich wie Markdown ist auch HTML (HyperText Markup Language) eine Auszeichnungssprache, die zur Strukturierung von Texten in Webseiten verwendet wird. Im Gegensatz zu Markdown ist HTML jedoch deutlich komplexer und ermöglicht eine detaillierte Strukturierung und Formatierung von Texten und zusätzlichen Inhalten (z.B. Bilder, Videos, …). HTML-Dateien können mit jedem Texteditor geöffnet und bearbeitet werden, jedoch ist zur Anzeige der Formatierung ein Webbrowser erforderlich. Das heißt, analog wie bei Markdown, muss der HTML-Code erst durch ein Programm (i.d.R. dem Browser) interpretiert und dargestellt werden.

HTML-Beispiel
Beispiel für eine einfache Webseite. Links der HTML-Code, rechts die dargestellte Webseite.3

Webseiten bestehen aus einer Kombination von HTML, CSS und Javascript, wobei

  • HTML die Struktur und den Inhalt der Seite definiert,
  • CSS das Aussehen und die Formatierung steuert und
  • Javascript die Interaktivität und Funktionalität hinzufügt.

Webseiten werden häufig zur Präsentation, Publikation oder Dokumentation von Forschung und deren Daten verwendet.

Aufgrund der zugrundeliegenden Struktur von HTML-Dateien, kann man teilweise auch direkt aus Webseiten die präsentierten Daten extrahieren. Dies nennt sich Web Scraping. Allerdings ist eine zusätzliche Bereitstellung der Daten in einem datenfokussierten Dateiformat (z.B. CSV, JSON) meist sinnvoller und empfohlen.

PDF

Das Portable Document Format (PDF) ist ein Dateiformat, das entwickelt wurde, um Dokumente unabḧängig von Anwendungen, Betriebssystemen oder Hardwareplattformen anzuzeigen und auszudrucken. Damit ist es möglich, Dokumente so zu speichern, dass sie auf jedem Gerät gleich aussehen, was bei Markdown und HTML nicht der Fall ist.

PDF-Dateien können Text, Bilder, Links, Formulare, Audio- und Videodateien enthalten und sind daher ein weit verbreitetes Format für die Präsentation und den Austausch von Dokumenten. Auch ist es möglich, die Bearbeitung, Druckbarkeit, … von PDF-Dateien zu beschränken, um die Integrität und Authentizität von Dokumenten zu gewährleisten. Allerdings sind diese Sicherheitsfeature nur bedingt wirksam und können durchaus umgangen werden.

PDF Dateien sollten für “Endprodukte” verwendet werden, die nicht mehr verändert werden sollen, z.B. für Berichte, Präsentationen, Publikationen, etc. Sie sind wenig geeignet für die Zusammenarbeit und Weiterverarbeitung von Daten, da sie nicht so einfach zu bearbeiten sind wie Textdateien oder textbasierte Dateiformate.

Grundlegend kann (fast) jedes PDF-Dokument mit einem entsprechenden Editor (z.B. Adobe Acrobat oder verschiedenen Onlinetools) bearbeitet werden. Allerdings erfolgt die Bearbeitung in der Regel nicht im Quellcode, sondern in einer grafischen Benutzeroberfläche, da das PDF-Format einen Mix aus Text- und Binärinformationen enthalten kann.

PDF editieren

Nehmen sie ein beliebiges PDF-Dokument und versuchen sie es mit einem PDF-Editor zu bearbeiten. Hierfür finden sich auch zahlreiche kostenlose Online-Tools.

DOCX, ODT, …

Um formatierte Texte zu schreiben und zu speichern werden häufig Textverarbeitungsprogramme wie Microsoft Word, Google Docs oder LibreOffice Writer verwendet.

Häufige Dateiendungen für derartige Textverarbeitungsdateien sind:

  • .docx - Microsoft Word (von Microsoft entwickelter Standard)
  • .odt - OpenDocument Text (quelloffener freier Standard)

Diese Dateiformate enthalten neben dem reinen Text auch Informationen zur Formatierung, Schriftart, Farben, Autor, … und können daher nicht direkt in einem Texteditor geöffnet und bearbeitet werden. Allerdings können sie in Textdateien (z.B. Markdown) oder PDF-Dateien konvertiert werden, um sie einfacher zu teilen oder zu archivieren.

Da diese Dateiformate proprietär sind, kann es zu Kompatibilitätsproblemen kommen, wenn sie von verschiedenen Programmen oder Versionen geöffnet werden. Das heißt, dass die Formatierung oder der Inhalt der Datei möglicherweise nicht korrekt angezeigt wird, wenn sie in einem anderen Programm geöffnet wird.

Daher wird empfohlen, für Dokumentationen und Texte, die geteilt oder archiviert werden sollen, stattdessen reine Textdateien, textbasierte Dateiformate oder PDF-Dateien zu verwenden.

Dokumentation in .md oder .docx?

Warum ist es besser, Dokumentationen und beschreibende Texte in Markdown-Dateien statt in Word-Dokumenten zu speichern?

  • Plattformunabhängigkeit: Markdown-Dateien können auf jedem Betriebssystem und mit jedem Texteditor geöffnet und bearbeitet werden, während Word-Dokumente ein entsprechendes Textverarbeitungsprogramm benötigen.
  • Versionierung: Markdown-Dateien können leichter in einem Versionskontrollsystem (z.B. Git) gespeichert und lokale Änderungen dokumentiert werden.
  • Flexibilität: Markdown-Dateien können einfacher (automatisiert) in beliebige Formate (z.B. HTML, PDF) oder auch Präsentationsformen (Webseite, Buch, …) konvertiert werden.

Programmierskripte


Neben reiner Textinformation werden auch Programmierskripte in Textdateien abgelegt. Diese enthalten Anweisungen und Befehle, die von einem Computer ausgeführt werden können, um bestimmte Aufgaben zu erledigen. Die Skripte werden in einer Programmiersprache geschrieben, die speziell für die Erstellung von Programmen und Skripten entwickelt wurde. Zur Dokumentation und Weitergabe von (Forschungs)Daten ist es daher häufig wichtig, auch die verwendeten Programmierskripte zu speichern und zu teilen. Daher sollten sie gängige Programmiersprachen und -skripte kennen, um derartige Dateien identifizieren zu können.

Einige wichtige Dateiendungen für Programmierskripte sind:

  • .py - Python
  • .R - R
  • .js - Javascript
  • .sh - Shell - Linux/MacOS Kommandozeile
  • .bat - Batchskripte - MS DOS/Windows Kommandozeile
  • .ps1 - Powershellskripte - erweiterte MS Windows Kommandozeile

Markdown wird auch sehr häufig in Verbindung mit Programmiersprachen verwendet, um Codebeispiele und Dokumentationen zu erstellen. Zudem wurden “Hybridformate” entwickelt, die sowohl Markdown für Beschreibungen als auch direkt auszuführende Programmieranweisungen enthalten. Beispiele hierfür sind:

  • Jupyter Notebooks (.ipynb),
  • R Markdown (.Rmd) oder R Notebooks (.Rnb).

Diese Formate ermöglichen es, Code und Dokumentation bzw. Interpretation in einem Dokument zu kombinieren und interaktiv auszuführen, was sie besonders für die Datenanalyse und -visualisierung geeignet macht. Zudem können sie in verschiedene Formate exportiert werden, z.B. als HTML, PDF oder Präsentation, was sie für die Veröffentlichung und den Austausch von Ergebnissen nützlich macht. Auch hier gilt, dass ggf. nicht nur das erzeugte finale Dokument, sondern auch das ursprüngliche Notebook gespeichert und geteilt werden sollte, um die Nachvollziehbarkeit und Reproduzierbarkeit der Analyse zu gewährleisten.

Tabellen


Dateiendungen:

  • textbasierte Formate, z.B.
    • .csv - Comma Separated Values
    • .tsv - Tab Separated Values
  • binäre Formate, z.B.
    • .xls, .xlsx - MS Excel
    • .ods - OpenDocument Spreadsheet

Bei der Datenerhebung, -verarbeitung oder zur -archivierung werden Daten häufig in tabellarischer Form gespeichert. Hierbei werden die Daten in Zeilen und Spalten organisiert, wobei in einzelnen Spalten nur Informationen der gleichen Form (Zahl, Text, ..) gelistet werden.

Beispiel tabellarischer Daten
Tabellarische Daten sind die häufigste Form der Datenerhebung.

Tabellen können in textbasierten Formaten (z.B. CSV) oder binären Formaten (z.B. XSLX) digital gespeichert werden. Textbasierte Formate sind plattformunabhängig und können in jedem Texteditor geöffnet und bearbeitet werden, während binäre Formate spezifische Programme erfordern und ggf. zu Kompatibilitätsproblemen führen können. Zudem werden zur Verarbeitung von binären Formaten in Programmiersprachen häufig zusätzliche Funktionalitäten (Pakete) benötigt, was die Verwendung und Nachnutzung erschweren kann.

Eine der häufigsten Formen der tabellarischen Daten ist das CSV-Format (Comma Separated Values), bei dem die Daten durch Kommas getrennt in einer Textdatei gespeichert werden. Eine mögliche CSV-Repräsentation der obigen Tabelle ist wie folgt.

Nr,Tag,Wo
1,Mo,Zoom
8,Di,?

Problematisch …

Welche Probleme sehen sie mit der obigen CSV-Kodierung der Tabelle? Was kann problematisch werden?

  • Spaltentrennzeichen: Da es sich um einen deutschsprachigen Datensatz mit Zahlen handelt, kann es zu Problemen mit dem Spaltentrennzeichen “,” kommen, falls Dezimalzahlen z.B. “2,34” im Datensatz auftreten. In diesem Fall wäre es nicht eindeutig, ob das Komma ein Spalten- oder Dezimaltrennzeichen ist. Das gleiche Problem ergibt sich, wenn komplette Sätze (die potentiell Kommas enthalten) gespeichert werden. Daher hat sich im westeuropäischen Raum das Semikolon “;” als Trennzeichen etabliert (welches auch als CSV2-Format bezeichnet wird). Alternativ kann auch das TSV-Format verwendet werden, das Tabulatoren als Spaltentrenner verwendet.
  • Fehlende Daten: Hier wurden fehlende Daten mit “?” vermerkt. Während dies für menschliche Augen ein hilfreicher Hinweis sein kann, ist er für die automatische Datenverarbeitung schlecht geeignet. Wenn einzelne Daten fehlen, sollte in der jeweiligen Spalte einfach keine Information angegeben werden. In diesem Falle also besser “8,Di,”.
  • Textkodierung: Da der Datensatz Text enthält, können beim Import Probleme mit der Zeichenkodierung auftreten. Aktuell wird empfohlen UTF-8 zu verwenden.

Kommentare und Metadaten

CSV sieht i.d.R. keine Kommentare, Metadaten, etc. vor. Daher sollten diese Informationen in einer separaten Datei oder in einem anderen Format gespeichert werden. Falls unbedingt nötig, werden Kommentare in CSV-Dateien i.d.R. in den ersten Zeilen gelistet und durch spezielle Zeichen (z.B. #) am Anfang der Kommentarzeilen markiert. Damit ist es möglich, diese beim Import zu überspringen oder zu ignorieren

Hierarchische Daten


Dateiendungen:

  • .json - JavaScript Object Notation
  • .xml - Extensible Markup Language
  • .yaml - YAML Ain’t Markup Language

Eine Alternative zur tabellarischen Datenspeicherung bieten hierarchische Datenformate, die Informationen in einer verschachtelten Struktur speichern. Hierbei können Daten in beliebiger Tiefe und Komplexität organisiert werden, was sie besonders für die Speicherung von Metadaten oder strukturierten Daten geeignet macht. Zudem liefert diese Form der Datenrepräsentation direkt die Möglichkeit, Zusammenhänge und Beziehungen zwischen den Daten zu speichern.

JSON

JSON (JavaScript Object Notation) ist, wie der Name schon sagt, ein auf der Programmiersprache JavaScript basierendes Format, das Daten in einem hierarchischen Format speichert. Einzelne Datensätze werden wie folgt repräsentiert:

JSON

{
  "Nr": 1,
  "Tag": "Mo",
  "Ort": "Zoom"
}

Hierbei werden die Daten in Doppelpunkt-getrennten Schlüssel-Wert-Paaren gespeichert, wobei die Werte beliebige Datentypen annehmen können (Zahlen, Text, Listen, …). Datensätze selbst werden durch geschweifte Klammern {} begrenzt, wobei die einzelnen Schlüssel-Wert-Paare durch Kommas getrennt werden. Diese Struktur kann beliebig tief verschachtelt werden, um komplexe Datenstrukturen abzubilden. In unserem Beispiel können wir die Informationen für mehrere Treffen wie folgt speichern:

JSON

{
  "Termine" : [
    {
      "Nr": 1,
      "Tag": "Mo",
      "Ort": "Zoom"
    },
    {
      "Nr": 8,
      "Tag": "Di",
      "Ort": null
    }
  ]
}

Hierbei werden die einzelnen Treffen in einer Liste Termine mit eckigen Klammern [] zusammengefaßt, welche wiederum die einzelnen Treffen als JSON-Objekte enthält. Wichtig: die Liste selbst ist auch wieder ein JSON-Objekt, das in geschweiften Klammern {} eingebettet wird (die “äußeren” Klammern umfassen den Datensatz). Einrückung, Zeilenumbrüche und Leerzeichen sind rein zur besseren Lesbarkeit erlaubt, können aber weggelassen werden. Letzteres ist insbesondere bei großen Datenmengen sinnvoll, um die Dateigröße zu reduzieren.

Beachten sie, dass es hier (im Gegensatz zu CSV) keine Probleme mit dem Komma als Trennzeichen gibt, da die Daten in einem strukturierten Format gespeichert sind. Zudem werden fehlende Daten durch null repräsentiert, was der eindeutigen Information über fehlende Daten in JavaScript Notation entspricht. Allerdings müssen, wie in JavaScript, Textinformationen (sowie “Datennamen”) immer in Anführungszeichen gesetzt werden, was die Lesbarkeit im Vergleich zu CSV etwas erschwert.

JSON ist ein weit verbreitetes Format, das in vielen Programmiersprachen unterstützt wird und sich gut für den Datenaustausch zwischen verschiedenen Systemen eignet. Allerdings eignet es sich nur bedingt für die manuelle Bearbeitung durch Menschen, da es aufgrund der kompakten Strukturierung und der Anführungszeichen schnell unübersichtlich werden kann. Daher wird es i.d.R. automatisiert erzeugt oder in Kombination mit einem Editor oder einer speziellen Software verwendet, die die Strukturierung und Lesbarkeit der Daten verbessert, was wir im Folgenden ausprobieren werden.

JSON-Beispiel

  • Öffnen sie den JSON-Onlineeditor von tutorialspoint
  • Kopieren sie den JSON-Code vom obigen Beispiel in das Editorfenster (links)
  • Studieren sie die angezeigte Baumhierarchie des Datensatzes (rechts)
    • Sie können die einzelnen Knoten aufklappen und schließen, um die Hierarchie zu erkunden

Welche Rückschlüsse können sie aus den GRAUEN Infos an den einzelnen Knoten ziehen?

  • in geschweiften Klammern werden die Anzahl der Schlüssel-Wert-Paare angezeigt, also die Anzahl der Einzelinformationen im entsprechenden (Teil)Datensatz
  • in eckigen Klammern wird die Anzahl der Elemente in einer Liste angezeigt

XML

Die Extensible Markup Language (XML) ist ein weiteres hierarchisches Datenformat, das für die Repräsentation von strukturieren, hierarchischen Daten geeignet ist. Ähnlich wie in HTML werden Informationen in sogenannten Tags gespeichert, wobei in XML die Schlagwörter frei festgelegt werden können. So könnten wir unseren JSON Datensatz wie folgt in XML ablegen.

XML

<?xml version="1.0"?>
<termine>
  <termin>
    <Nr>1</Nr>
    <Tag>Mo</Tag>
    <Ort>Zoom</Ort>
  </termin>
  <termin>
    <Nr>8</Nr>
    <Tag>Di</Tag>
    <Ort></Ort>
  </termin>
</termine>

Im Gegensatz zu JSON gibt es somit keine “unbenannten” Daten, da alle Information in Tags eingeschlossen werden muss, die durch spitze Klammern <> gekennzeichnet sind. Die führende Zeile <?xml version="1.0"?> gibt die Version des XML-Formats an, die in diesem Fall 1.0 ist, und zeigt beispielhaft, wie in XML Metadaten etc. eingebettet werden können.

Da jede Information auch wieder mit einem schließenden Tag beendet werden muss, sind XML Kodierungen meist umfangreicher als JSON, was die Lesbarkeit und die Dateigröße beeinflußt. Allerdings erlaubt XML auch die Definition von Attributen, die zusätzliche Informationen zu den Tags enthalten können. Dies kann insbesondere bei der Speicherung von Metadaten oder anderen Informationen hilfreich sein, die nicht direkt in den Tags gespeichert werden sollen.

Vordefinierte Schemata wie DTD (Document Type Definition) oder XSD (XML Schema Definition) können verwendet werden, um die Struktur der XML-Datei festzulegen, die Validierung zu erleichtern und einheitliche Standards zum Datenaustausch zu ermöglichen. Ein Beispiel hierfür ist der TEI (Text Encoding Initiative) Standard für Textrepräsentation.

Versuchs mal …

Es gibt auch einen XML-Onlineeditor von tutorialspoint. Öffnen sie diesen und kopieren sie das obige XML in die linke Editormaske.

Was unterscheidet das XML Rendering (rechts) vom JSON Rendering aus der letzten Aufgabe oben?

  • es gibt keine explizite Unterscheidung in Datensätze und Listen
  • alle Informationen werden gleich (als Text) behandelt und angezeigt (bei JSON gab es unterschiedliche Darstellungen)
  • Textinformation (zwischen einschließenden Tags) wird nicht “gequotet”, d.h. es sind keine Anführungszeichen nötig! Ausnahme sind “Attribute” der Tags, wie die Versionsinformation im Beispiel. Tauschen sie mal <termine> durch <termine info="meine Liste"> aus…

Auch für XML gilt, dass dieses i.d.R. automatisiert als Datenformat erzeugt wird und nur in seltenen Fällen komplett manuell erfaßt wird. Allerdings ist es, im Vergleich zu JSON, einfacher menschenlesbar, da alle Elemente eindeutig mit Tags benannt und begrenzt sind.

Bilder und Grafiken


Neben Text- und Tabellendaten sind auch Bilder und Grafiken wichtige Bestandteile von Forschungsdaten. Hierbei wird grundlegend in zwei Arten von Bildinformationen unterschieden, die sich in ihrer Darstellung und Verwendung wesentlich unterscheiden.

  • Rastergrafiken bestehen aus einer “Tabelle” von Pixeln, d.h. Farbinformationen pro Bildposition, und sind insbesondere für Fotos und Bilder geeignet, die eher eine diffuse Farbgebung oder Detailgestaltung haben.
  • Vektorgrafiken hingegen sind eher “Malanleitungen”, die beschreiben wo welche Bildelemente mit welcher Farbe, Form, etc. gezeichnet werden soll. Dies ist insbesondere für technische Zeichnungen, Diagramme und Schaubilder geeignet, da diese Form der Bildkodierung verlustfrei skaliert (“gezoomt”) werden kann.

Rastergrafiken

Dateiendungen:

  • .jpg oder .jpeg : JPEG (Joint Photographic Experts Group) - weit verbreitetes Format für Fotos und Bilder. ACHTUNG: verlustbehaftet, d.h. Abwägung zwischen Datenverlust und Dateigröße!
  • .png : Portable Network Graphics - verlustfreies Format für Bilder, Diagramme und Grafiken
  • .tif oder .tiff : Tagged Image File Format - verlustfreies Format für hochauflösende Bilder und Scans (vor allem für hochqualitativen Druck)
  • .gif : Graphics Interchange Format - verlustfreies Format für Animationen und einfache Grafiken

Der zentralen Unterschied zwischen diesen Formaten ist die Art der Kompression und die damit verbundene Qualität der Bilder. Während JPEG-Dateien eine verlustbehaftete Kompression verwenden, die die Dateigröße reduziert, aber auch die Bildqualität beeinträchtigen kann, sind PNG- und TIFF-Dateien verlustfrei und eignen sich daher besser für die Speicherung von Bildern, bei denen die Qualität erhalten bleiben soll.

Daher sollte die Wahl des Dateiformats von der Art des Bildes und der beabsichtigten Verwendung abhängen. Für Fotos und Bilder, die auf Webseiten oder in Präsentationen verwendet werden, ist JPEG oft ausreichend, während PNG oder TIFF für hochwertige Drucke oder Grafiken bevorzugt werden sollten.

Punktdichte und Farbtiefe in Rastergrafiken
Allen Formaten gemein ist, dass die Bildinformation gerastert wird, d.h. durch eine Tabelle von Pixeln dargestellt wird. Hierbei wird die Farbinformation für jeden Pixel gespeichert, was die Dateigröße von Bildern stark beeinflusst. Die Anzahl der Pixel wird Auflösung oder Punktdichte genannt. Die verwendete Farbtiefe (Anzahl möglicher Farben) beeinflusst ebenfalls die Dateigröße.4

Vektorgrafiken

Dateiendungen:

  • .svg : Scalable Vector Graphics - XML Format für Grafiken und Diagramme (z.B. für Webseiten)
  • .pdf : Portable Document Format - für Dokumente, kann aber auch Vektorgrafiken enthalten (z.B. für wissenschaftliche Publikationen)
  • .eps : Encapsulated PostScript - für Druckgrafiken und technische Zeichnungen (eher veraltet)
  • .ai : Adobe Illustrator (proprietär)
  • .cdr : Corel Draw (proprietär)

Im Gegensatz zu Rastergrafiken wird in Vektorgrafiken nicht das finale Bild gespeichert, sondern eine Anleitung, wie das Bild zu zeichnen ist. Daher eigenen sich Vektorgrafiken besonders für technische Zeichnungen, Diagramme und Schaubilder, die klar definierte Formen und Linien haben und i.d.R. einheitliche Farbflächen verwenden. Jedem Bildelement (z.B. Linie, Kreis, Text) wird eine mathematische Formel zugewiesen, die die Position, Form des Elements beschreibt. Zudem kann für jedes einzelne Element die Farbe, Linienstärke, Füllung, etc. definiert werden, was eine hohe Flexibilität bei der Darstellung ermöglicht.

Da Vektorgrafiken nicht aus Pixeln bestehen, sondern aus mathematischen Formeln, können sie verlustfrei skaliert werden, d.h. sie können ohne Qualitätsverlust vergrößert oder verkleinert werden. Auch ermöglichen Vektorgrafiken häufig eine bessere Komprimierung, da die mathematischen Formeln weniger Speicherplatz benötigen als die Pixelinformationen von Rastergrafiken, sodass die Dateigröße von (einfachen) Vektorgrafiken i.d.R. kleiner ist. Auch ist es möglich, nur Ausschnitte von Vektorgrafiken zu verwenden, ohne dass die Qualität leidet.

Da Vektorgrafiken in der Regel in speziellen Programmen erstellt werden, sind die Dateiformate häufig proprietär und können nicht ohne weiteres von anderen Programmen geöffnet oder bearbeitet werden. Eine Ausnahme bildet das SVG-Format, das auf XML basiert und daher auch von anderen Programmen gelesen und bearbeitet werden kann. Das SVG-Format wurde speziell für das Web entwickelt und ist daher besonders für Webseiten geeignet. Hierbei können Vektorgrafiken direkt in den HTML-Code eingebunden werden und sind daher besonders für interaktive Grafiken und Diagramme geeignet, die mit Hilfe von JavaScript dynamisch verändert werden können (inhaltlich wie auch optisch). Aufgrund seiner Verbreitung und Flexibilität ist das SVG-Format sehr gut für den Datenaustausch und die Archivierung von Grafiken geeignet.

Für die Publikation von wissenschaftlichen Ergebnissen ist das PDF-Format besonders geeignet, da es sowohl Text als auch Vektorgrafiken und Rasterbilder enthalten kann, auf nahezu jedem Gerät geöffnet werden kann und für die einheitliche Darstellung auf allen Geräten entwickelt wurde. Zudem können PDF-Dateien mit Metadaten versehen werden, die Informationen über den Autor, das Erstellungsdatum, die Lizenz, etc. enthalten. Dies ist besonders wichtig für die Nachvollziehbarkeit und Zitierbarkeit von wissenschaftlichen Ergebnissen.

Schwierigkeiten mit digitalen Bildern

Rastergrafiken haben den Nachteil, dass sie bei der Vergrößerung an Qualität verlieren, da die Pixelinformationen interpoliert werden müssen, d.h. die Software muss die fehlenden Pixel “erraten” oder Zwischenwerte berechnen. Dies führt zu Unschärfe und Verzerrungen, insbesondere bei starken Vergrößerungen. Auch die Farbtiefe und Auflösung der Bilder beeinflussen die Qualität und Dateigröße, sodass eine Abwägung zwischen Qualität und Speicherplatzbedarf getroffen werden muss.

Beispiele fuer Kantenglaettung
Beispiele für Pastergrafikdarstellung mit und ohne Kantenglättung (Anti-Aliasing) 5.

Vektorgrafiken sind hingegen nicht für alle Arten von Bildern geeignet, insbesondere für Fotos und Bilder mit komplexen Farbverläufen und Texturen. Hier sind Rastergrafiken besser geeignet, da sie die feinen Details und Farbnuancen besser darstellen können. Zudem werden Vektorgrafiken bei der Konvertierung in Rastergrafiken (z.B. für den Druck) in der Regel gerastert, d.h. in Pixel umgewandelt, was zu Qualitätsverlusten führen kann. Bei sehr komplexen Vektorgrafiken mit sehr vielen (überlappenden) Elementen kann die Dateigröße auch größer sein als bei vergleichbaren Rastergrafiken, da die mathematischen Formeln und die Vielzahl der Einzelelemente mehr Speicherplatz benötigen.

Zusammenfassung


Hauptpunkte

  • Standardisierte Dateiformate erleichtern den Datenaustausch und die Archivierung von Daten.
    • für Rohdaten und Publikation
    • für Austausch mit Kollegen und der Öffentlichkeit
    • i.d.R. textbasierte Formate (z.B. CSV, JSON, XML)
  • Proprietäre Dateiformate für internen Gebrauch und spezielle Anwendungen/Software
    • ermöglichen i.d.R. umfangreichere Informationsspeicherung und -darstellung
    • können (für Austausch) in offene Formate konvertiert werden
  • Wahl des Dateiformats u.a. abhängig von
    • Art der Daten (z.B. Text, Bild, Video, Audio, ..)
    • Verwendungszweck (z.B. Analyse, Publikation, Archivierung)
    • Kompatibilität mit Software und Plattformen
  • Dateiendungen
    • sind nur ein Teil des Namens ohne weitere Auswirkungen
    • ermöglichen dem Betriebssystem das richtige Programm zum Öffnen auszuwählen
      • Programmassoziation kann geändert werden!

Einordnung im Datenlebenszyklus

Datenlebenszyklus}

Die richtige Wahl des Dateiformats ist in allen Phasen des Datenlebenszyklus wichtig:

  • Planung: Auswahl geeigneter Formate für die Datenerhebung, -analyse und -publikation
  • Erhebung: Speicherung und Dokumentation der Daten
  • Analyse: Verwendung von geeigneten Formaten für die Analyse (Skripte) und von Zwischenergebnissen (ggf. proprietäre Formate)
  • Publikation: Bereitstellung der Daten in geeigneten Formaten
  • Archivierung: Langzeitarchivierung in geeigneten Standardformaten
  • Nachnutzung: Dokumentation; Auswahl von Formaten, die die eigene Nachnutzung erleichtern

  1. Proprietär bedeutet, dass das Dateiformat von einem bestimmten Hersteller oder für dessen Programm entwickelt wurde und daher nur von diesem Programm oder von Programmen, die das Format kennen und unterstützen, gelesen oder verarbeitet werden können.↩︎

  2. Quelle - B.K. Nielsen - Freron - 07.08.2024↩︎

  3. Quelle - Chris Spann - Lumar - 07.08.2024↩︎

  4. Quelle - F. Graf - wikipedia.de - 09.08.2024↩︎

  5. Quelle - selfhtml.org - 12.09.2024↩︎

Content from Reguläre Ausdrücke


Zuletzt aktualisiert am 2024-11-04 | Diese Seite bearbeiten

Geschätzte Zeit: 50 Minuten

Übersicht

Fragen

  • Was?
  • Aufbau?
  • Wo?

Ziele

  • Verständnis was Reguläre Ausdrücke sind
  • Wissen um die Elemente von Regulären Ausdrücken
  • Anwendung von Regulären Ausdrücken

Reguläre Ausdrücke sind einer der Grundpfeiler für die komplexe Textdatenprozessierung. Mit diesen kann man mit wenig Aufwand

  • nach Vorkommen von Textmustern suchen, um diese zu
    • extrahieren,
    • zählen, oder
    • ersetzen (mit neuen Texten oder Teilen des alten Textes).

Dabei ist unter “Textmuster” nicht ein exaktes Wort oder dergleichen zu verstehen, sondern eine Suchkodierung, welche Variabilität zulässt.

Als Einsteig ein kleines Beispiel: Wir haben die folgenden Worte

soll gefunden werden soll nicht gefunden werden
Frida Fritz
Erna Hugo
Lisa Lino

Die einfachste (und am wenigsten flexible) Lösung wäre es, die gesuchten Worte alle als Alternativen hintereinander in einem regulärem Ausdruck aufzulisten:

  • Frida|Erna|Lisa” = wobei “|” für ein “ODER” steht

Wenn man reguläre Ausdrücke baut, muss man genau schauen, was die gesuchten Wörter (oder Textpassagen) gemeinsam haben. In unserem Fall enden alle gesuchten Namen mit “a”, was wir verwenden können. Was davor für Buchstaben kommen (und wieviele), ist erst einmal unerheblich, um die Worte von den nicht gesuchten zu unterscheiden. Daher könnten wir folgendes verwenden:

  • .*a” = wobei “.” für ein beliebiges Zeichen (Buchstabe, Ziffer, Leer-, Satzzeichen, …) steht und “*” für eine beliebige Anzahl (auch 0) des vorherigen Teils (also hier “.”)

Das funktioniert, liefert aber ggf. zu viel Variabilität, was ein häufiger Fallstrick bei regulären Ausdrücken ist. Sprich sie sind zu unkonkret. In unserem Fall passt der Ausdruck auch auf: “..a”, “lala”, “Hans-Anna”, … Sie sehen das Problem? Um dieses zu umgehen, könnte man folgende Sachen machen:

  • .+a” = wir fordern mit “+”, dass vor dem “a” mindestens ein (beliebiger) Buchstabe ist
  • [a-zA-Z]+a” = wir geben in “[]” ganz genau an, welche Buchstaben wir erlauben (hier z.B. keine Umlaute)
    • mit Bindestrich “-” können wir auch Reihen angeben, z.B. “[a-d]” = a, b, c oder d
  • \w+a” = dazu könnten wir auch eine vordefinierte character class (hier \w für Wortbuchstabe) nehmen
  • [A-Z][a-z]*a” = mit “[A-Z]” sichern wir, dass der erste Buchstabe grossgeschrieben ist und anschliessend können (da “*”) nur Kleinbuchstaben in der Wortmitte sein
  • … und so weiter

Das Beispiel zeigt, dass reguläre Ausdrücke ganz allgemein (“.*a”) oder sehr präzise (“Frida|Erna|Lisa”) sein können. Die Kunst ist es nun, den für die anstehende Aufgabe passenden regulären Ausdruck zu erdenken. Dazu hilft einem das beiliegende Cheatsheet, welches man sicher auch in Zukunft immer wieder heraus holen muss.

Suche von Textmustern

Reguläre Ausdrücke werden von links nach rechts abgearbeitet und buchstabenweise abgeglichen (gematcht).

Zudem muss man wissen, dass i.d.R. das längste passende Textstück als Treffer gesucht wird. Man spricht hierbei von greedy matching.

Aufgabe

Öffnen sie den Online RegEx-Tester https://regex101.com/.

Kopieren sie die Namen aus obiger Tabelle in das Textfeld und prüfen sie, ob die bisher vorgestellten regulären Ausdrücke wirklich funktionieren.

Wichtig: Kopieren sie die regulären Ausdrücke ohne Anführungszeichen in das Suchfeld.

Ordnen sie die regulären Ausdrücke nach ihrer Spezifität (von allgemein nach spezifisch).

Ausdrücke in steigender Spezifität:

  • .*a” (sehr allgemein, matched auch nur ein einzelnes “a”)
  • \w+a” (\w matched auch Zahlen und Unterstriche)
  • [a-zA-Z]+a” (nur Buchstaben, keine Umlaute oder ß)
  • [A-Z][a-z]*a” (erst Grossbuchstabe, dann Kleinbuchstaben)
  • Frida|Erna|Lisa” (nur die drei Namen)

Aufbau


Reguläre Ausdrücke bestehen aus einer Aneinanderreihung von Elementen, die in einer bestimmten Reihenfolge stehen müssen. Das heißt, in den meisten Fällen beschreibt man ein Wort oder eine Wortgruppe, wobei einzelne Positionen unterschiedliche Buchstaben aufweisen können. An diesen Stellen kommen die sogenannten character classes ins Spiel, die Platzhalter für Buchstaben, Zahlen, Leerzeichen, … sind.

Damit nicht nur Wörter gleicher Länge mit einem Suchmuster gefunden werden, gibt es Quantifikatoren, die angeben, wie oft das vorherige Zeichen vorkommen soll (oder kann).

Zuletzt gibt es noch Anker, die eingrenzen, WO ein Suchmuster im Text vorkommen soll (z.B. am Anfang oder Ende eines Wortes oder der Zeile etc.).

Final können mit Gruppierungen auch Teile des gefundenen Textes extrahiert werden, um sie weiter zu verarbeiten oder um z.B. Wiederholungen im Textmuster zu beschreiben.

In normalen regulären Ausdrücken sind alle Buchstaben, die Teil des Suchmusters sind, auch Teil des Treffers/Matches. Mit Lookarounds können aber auch “Randbedingungen” definiert werden, die nicht Teil des Matches sind, aber dennoch erfüllt sein müssen. Zum Beispiel das vor einem Wort ein Leerzeichen oder Satzzeichen sein muss, aber dieses nicht Teil des Matches ist.

RegEx Magic

Die Kunst besteht nun darin, die richtigen Elemente in der richtigen Reihenfolge zu kombinieren, um das gewünschte Suchmuster zu beschreiben.

Hierbei sollte das Muster so allgemein wir nötig und so spezifisch wie möglich sein, um nur die gewünschten Treffer zu erhalten. Dies ist vor allem wichtig, wenn das Muster nur an einem kleinen Beispieldatensatz entwickelt, später aber auch auf andere Datensätze angewandt werden soll.

Elemente


Grundlegend unterscheidet man bei regulären Ausdrücken folgende Elemente:

  • character classes, d.h. Platzhalter die auf mehrere Buchstaben matchen, z.B.
    • . = jedwedes Zeichen
    • [xyz] = explizite Zeichenliste, hier “x”, “y” und “z”
      • auch Reihen möglich, z.B. [3-7] = 3,4,5,6,7
    • \s = whitespaces = alle unsichtbaren Zeichen, z.B. Leerzeichen, Tabulator, …
    • \d = digits = Zahlen = [0-9]
    • \w = (english) word = [A-Za-z0-9_] (keine Umlaute etc.!)
    • Negation:
      • Grossschreibung \S, \D, .. = alles “ausser” den Zeichen der entsprechenden “kleinen Klasse” \s, \d, …
      • [^xyz] = das ^ negiert die explizite Liste (alles ausser x,y,z)
  • Quantifikatoren, d.h. wie häufig soll das vorangehende Zeichen gematcht werden, z.B.
    • ? = ein oder kein mal
    • + = mindestens einmal
    • * = kann mehrfach vorkommen oder gar nicht
    • {..} = explizite Anzahl
  • Anker, d.h. wo soll der match verortet sein, z.B.
    • ^ = Zeilenanfang
    • $ = Zeilenende
    • \b = Wortgrenze, z.B. er\b matcht nur “er” am Wortende
  • Gruppen, d.h. Zusammenfassung von match-Teilen, z.B.
    • (..) = Klammern werden nicht gematcht, sondern sind Markierungen
    • z.B. für lokale Alternativdefinition ala (Hi|Ku)nz = Hinz oder Kunz
    • \1 Rückreferenzierung auf 1., 2., … vorangehende Gruppe
      • z.B. (.).\1 matcht aha, oho, ana, d.h. erster und letzter Buchstabe gleich

Neben den oben genannten RegEx-spezifischen \..-Elementen gibt es auch immer noch einige Sonderzeichen für die auch Escapes notwendig sind, z.B.

  • \t für Tabulator
  • \n für Zeilenumbruch

Ausserdem müssen Zeichen, die in RegEx eine spezielle Bedeutung haben, auch escaped werden z.B.

  • \[ für das normale [-Zeichen
  • \\ für das normale \-Zeichen
  • \. für das normale .-Zeichen
  • \+ für das normale +-Zeichen

Tutorials


Wem das jetzt zu schnell oder kompakt war, oder wer noch etwas bei regulären Ausdrücken ins Schwimmern gerät, dem seien folgende Tutorials ans Herz gelegt:

RegEx Kreuzworträtsel

Zudem gibt es auch spielerische Ansätze, um das Lesen und Verstehen von regulären Ausdrücken zu üben.

Besuchen sie dazu die Seite:

Bis zu welchem Level kommen sie? 😎

CheatSheet


RegEx Cheatsheet}

Zusammenfassung


Hauptpunkte

  • Reguläre Ausdrucke kodieren Textsuchmuster mit Variabilität in
    • den vorkommenden Zeichen (positionsspezifisch)
    • der Häufigkeit der Zeichen (oder Teilmuster)
    • der Position des Musters im Text
    • den flankierenden Texten
  • Abwägung zwischen allgemein und spezifisch ist wichtig, je nach Einsatzzweck
  • Cheatsheet der Elemente

Einordnung im Datenlebenszyklus

Datenlebenszyklus
In welchen Phasen im Datenlebenszyklus sehen sie obige Punkte als besonders wichtig an?

Reguläre Ausdrücke können immer dann von Nutzen sein, wenn Daten nach bestimmten Mustern oder Informationen durchsucht oder verändert werden sollen. Konkret wären folgende Phasen im Datenlebenszyklus denkbar:

  • Planung: Suche nach geeigneten Daten und Dokumentationen
  • Erhebung: Überblick und Validierung der Daten
  • Analyse: Verarbeitung von Textdaten