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.