Osa 7

Behandla data

Läsa CSV-filer

CSV är ett så enkelt format att vi tills vidare har behandlat dessa filer med självskriven kod. Det finns däremot en färdig modul för CSV-filer i Pythons standardbibliotek: csv. Modulen fungerar så här:

import csv

with open("test.csv") as fil:
    for rad in csv.reader(fil, delimiter=";"):
        print(rad)

Koden ovan läser alla rader i CSV-filen test.csv, skiljer innehåller på varje rad med separatorn ; och skriver ut varje lista. Om innehållet i filen är det följande…

012121212;5
012345678;2
015151515;4

…borde koden skriva ut det här:

Exempelutskrift

['012121212', '5'] ['012345678', '2'] ['015151515', '4']

Eftersom CSV-formatet är så enkelt, kan vi fråga oss vad nyttan med en skild modul är då vi bara kunde använda split-funktionen. Det finns några bra orsaker. En orsak är att csv-modulen klarar av strängar som innehåller skiljetecknet:

"aaa;bbb";"ccc;ddd"

Koden ovan skulle då ge följande resultat:

Exempelutskrift

['aaa;bbb', 'ccc;ddd']

Om vi skulle använda split-funktionen, skulle själva strängarna också delas i två, vilket skulle förstöra den data som ska behandlas och antagligen orsaka problem i programmet.

Läsa JSON-filer

CSV är bara ett maskinläsbart dataformat. JSON är ett annat sådant format och det används ofta när data överförs mellan olika program.

JSON-filer är textfiler som följer en strikt syntax, som eventuellt är lite mindre människovänligt än CSV-formatet. Följande exempel använder filen kurser.json, som innehåller information om några kurser:

[
    {
        "namn": "Introkurs i programmering",
        "id": "Ohpe",
        "perioder": [1, 3]
    },
    {
        "namn": "Fortsättningskurs i programmering",
        "id": "Ohja",
        "perioder": [2, 4]
    },
    {
        "namn": "Databasapplikation",
        "id": "Tsoha",
        "perioder": [1, 2, 3, 4]
    }
]

Strukturen hos en JSON-fil kanske ser bekant ut. JSON-filen ser ut som en Python-lista som innehåller tre Python-lexikon.

Standardbiblioteket innehåller json-modulen som kan användas för att behandla JSON-filer. Funktionen loads tar emot ett argument som innehåller data i JSON-format och konverterar den till Pythons egen datastruktur. När vi använder kurser.json i koden nedan…

import json

with open("kurser.json") as fil:
    data = fil.read()
kurser = json.loads(data)
print(kurser)

…får vi följande utskrift:

Exempelutskrift

[{'namn': 'Introkurs i programmering', 'id': 'Ohpe', 'perioder': [1, 3]}, {'namn': 'Fortsättningskurs i programmering', 'id': 'Ohja', 'perioder': [2, 4]}, {'namn': 'Databasapplikation', 'id': 'Tsoha', 'perioder': [1, 2, 3, 4]}]

Om vi vill skriva ut namnet på varje kurs kan vi använda en for-loop:

for kurs in kurser:
    print(kurs["namn"])
Exempelutskrift

Introkurs i programmering Fortsättningskurs i programmering Databasapplikation

Loading

Hämta en fil från internet

Standardbiblioteket i Python innehåller också moduler som kan användas för att hantera innehåll på internet. En nyttig funktion är urllib.request.urlopen. Det lönar sig att bekanta sig med modulen som helhet, men följande exempel borde räcka till för att få en insikt i hur funktionen fungerar. Den kan användas för att hämta data från internet, för vidare behandling i ditt program.

Följande kodstunn skriver ut innehållet från huvudsidan för Helsingfors universitet:

import urllib.request

begaran = urllib.request.urlopen("https://helsinki.fi")
print(begaran.read())

Sidor som är skräddarsydda för människoögon ser inte vanligtvis trevliga ut när deras kod skrivs ut. I de kommande exemplen kommer vi däremot att läsa in data i maskinformat från internet. En stor del maskinläsbara data på internet är i JSON-format.

Loading
Loading
Loading

Hitta moduler

Pythons officiella dokumentation innehåller information om alla moduler som är tillgängliga i standardbiblioteket:

Förutom standardbiblioteket är internet fullproppat med andra Python-moduler för olika ändamål. Några vanliga moduler listas på den här sidan:

Loading
Loading...
:
Loading...

Log in to view the quiz

Du har nått slutet av den här delen! Fortsätt till nästa del:

Se dina poäng genom att klicka på cirkeln nere till höger av sidan.