Skip to content

Commit cff3c7a

Browse files
committed
feat: Update CSV I project chapter
1 parent 1f1f43a commit cff3c7a

5 files changed

Lines changed: 134 additions & 12 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
numbering:
3+
heading_1: true
4+
heading_2: true
5+
title: true
6+
---
7+
8+
# Projekt: Zählen einer ISBN in einem Datensatz (CSV)
9+
10+
```{seealso} 🎓 Lernziele
11+
:icon: false
12+
13+
In diesem Kapitel erlernen Sie, …
14+
15+
- … wie Sie mit Dateien umgehen können.
16+
- … wie Sie CSV-Dateien "von Hand" verarbeiten.
17+
- … wie Ihre Skripte Kommandozeilen-Parameter nutzen können.
18+
19+
```
20+
21+
```{hint} 📝 Kleine Aufgabe
22+
:icon: false
23+
24+
Die Aufgabe am Endes dieses Kapitels kann als Kleine Aufgabe angerechnet werden.
25+
26+
```
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
short_title: CSV
3+
numbering:
4+
heading_1: true
5+
heading_2: true
6+
title: true
7+
---
8+
9+
# Dateiformat CSV
10+
11+
Das Dateiformat CSV (_comma separated values_, `.csv`) ist ein gängiges Format für den
12+
Austausch tabellarischer Daten. Wie der Name sagt nutzt eine "klassische"
13+
CSV-Datei Kommata für die Trennung von einzelnen Werten (Spalten). Oft wird
14+
aber auch ein Semikolon genutzt.
15+
16+
## Struktur einer CSV-Datei
17+
18+
Eine CSV-Datei sieht typischerweise so aus:
19+
20+
Alle Werte in der CSV-Datei werden als Text (Zeichenkette, String)
21+
abgespeichert und auch so eingelesen. Sollen manche Werte/Spalten bspw. als
22+
Zahl interpretiert werden, so muss diese Transformation explizit durchgeführt
23+
werden.
24+
25+
Ein Datensatz entspricht in einer CSV-Datei immer einer Zeile in der Datei. Die
26+
Reihenfolge der Zeilen ist normalerweise nicht sinntragend, d.h. wenn ein
27+
anderer Datensatz "referenziert" werden soll, dann sollte dies über eindeutige
28+
IDs in Schlüsselspalten geschehen und nicht über einen Zeilen-Index.
29+
30+
Zellen können Leerzeichen enthalten. Zellen können optional mit doppelten
31+
Anführungsstrichen umschlossen sein. Dann können auch Zeichen wie `,` oder `\r`
32+
(CR, Carriage Return),`\n` (LF, Line Feed, Newline) in der Zelle stehen. Manche
33+
Programme können jedoch nicht mit solchen Dateien umgehen, weshalb dies nicht
34+
unbedingt empfohlen wird. Dies ist auch einer der Gründe, warum häufig ein
35+
Semikolon für die Spalten-Trennung genutzt wird. Das Semikolon wird innerhalb
36+
typischer Daten viel seltener genutzt als das Komma.
37+
38+
## Beispieldateien
39+
40+
```csv
41+
id, family name, given name, birthdate
42+
0, musterfrau, martha, 1.2.2003
43+
1, müller, kim, 1999-8-7
44+
2, 王, 祖寇, February 21, 2005
45+
```
46+
47+
```csv
48+
index;date;time;temp
49+
2;2025-10-10;11:51:02;21.4
50+
3;2025-10-10;11:51:12;21.5
51+
6;2025-10-10;11:57:05;21.1
52+
7;2025-10-10;11:57:20;21.6
53+
```
54+
55+
Es gibt auch das verwandte Dateiformat TSV (_tabulator separated values_, `.tsv`), welches einen Tabulator (`\t`) als Trennzeichen nutzt.
56+
57+
```tsv
58+
Matrikel Nr.\tNachname\tVorname\tAdresse\tHZB
59+
123456\tAa-Bb\tCcc\tMuster Str. 7b\t2,4
60+
234567\tAa\tDdd\tDeppendorf 12\t1,0
61+
345678\tBb\tEee\tAlexanderplatz 4\t1,3
62+
63+
```
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"id": "ea9b1de2-17ee-40aa-a796-706cedce3a8d",
6+
"metadata": {},
7+
"source": [
8+
"---\n",
9+
"numbering:\n",
10+
" heading_1: true\n",
11+
" heading_2: true\n",
12+
" title: true\n",
13+
"---\n",
14+
"# Dateien öffnen\n",
15+
"\n",
16+
"Um im Verlauf des Kapitels mit einer CSV-Datei arbeiten zu können müssen wir diese öffnen und deren Inhalt lesen können.\n"
17+
]
18+
}
19+
],
20+
"metadata": {
21+
"kernelspec": {
22+
"display_name": "Python 3 (ipykernel)",
23+
"language": "python",
24+
"name": "python3"
25+
},
26+
"language_info": {
27+
"codemirror_mode": {
28+
"name": "ipython",
29+
"version": 3
30+
},
31+
"file_extension": ".py",
32+
"mimetype": "text/x-python",
33+
"name": "python",
34+
"nbconvert_exporter": "python",
35+
"pygments_lexer": "ipython3",
36+
"version": "3.13.7"
37+
}
38+
},
39+
"nbformat": 4,
40+
"nbformat_minor": 5
41+
}

040-Projekt_CSV_I/Einleitung.md

Lines changed: 0 additions & 11 deletions
This file was deleted.

toc.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@ project:
2323
- file: 020-Projekt_Taschenrechner_I/040-Jupyter_Notebooks.ipynb
2424
- file: 020-Projekt_Taschenrechner_I/050-Ausführbare_Skripte.md
2525
- file: 030-Exkurs_Unix/Einleitung.md
26+
- file: 040-Projekt_CSV_I/000-Einleitung.md
27+
children:
28+
- file: 040-Projekt_CSV_I/010-Dateiformat.md
29+
- file: 040-Projekt_CSV_I/020-Dateien_öffnen.ipynb
2630
- file: 045-Projekt_Taschenrechner_II/010-Taschenrechner.ipynb
2731
children:
2832
- file: 045-Projekt_Taschenrechner_II/020-Nutzerinneneingabe.ipynb
2933
- file: 045-Projekt_Taschenrechner_II/030-Schleifen.ipynb
3034
- file: 045-Projekt_Taschenrechner_II/040-Implementierung.ipynb
3135
- file: 045-Projekt_Taschenrechner_II/050-Aufgabe_Erweiterung.md
32-
- file: 040-Projekt_CSV_I/Einleitung.md
3336
- file: 050-Exkurs_Git/Einleitung.md
3437
- file: 060-Projekt_CSV_II/Einleitung.md
3538
- file: 070-Projekt_MARC-XML/Einleitung.md

0 commit comments

Comments
 (0)