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:
['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:
['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:
[{'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"])
Introkurs i programmering Fortsättningskurs i programmering Databasapplikation
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.
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:
Log in to view the quiz
Se dina poäng genom att klicka på cirkeln nere till höger av sidan.