Python Academy · Lektion

Läsa CSV med csv.reader

Läs CSV-filer rad för rad och få åtkomst till kolumner med index.

Lektion 3 av 414 steg

Läsa CSV med csv.reader är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Introduktion

Pythons csv-modul hanterar komplexiteten i CSV-filer: citerade fält, avgränsare och olika radbrytningar.

Öppna en CSV-fil

with open('data.csv', newline='') as f: är det rekommenderade sättet — newline='' låter csv-modulen hantera radbrytningar.
import csv, io
sample = 'name,age,city\nAlice,30,NYC\nBob,25,LA'
reader = csv.reader(io.StringIO(sample))
for row in reader:
    print(row)

Grunderna i csv.reader

csv.reader(f) returnerar en iterator över rader, där varje rad är en lista med strängar.
import csv, io
data = 'a,b,c\n1,2,3\n4,5,6'
for row in csv.reader(io.StringIO(data)):
    print(row)

Hoppa över rubriken

next(reader) hoppar över rubrikraden. Eller använd csv.DictReader för att komma åt kolumner via namn.
import csv, io
data = 'name,age\nAlice,30\nBob,25'
reader = csv.reader(io.StringIO(data))
header = next(reader)  # skip
for row in reader:
    print(row)

Anpassad avgränsare

csv.reader(f, delimiter=';') läser filer där fälten avgränsas med semikolon. Det fungerar med alla avgränsare som består av ett enda tecken.
import csv, io
data = 'a;b;c\n1;2;3'
for row in csv.reader(io.StringIO(data), delimiter=';'):
    print(row)

Hantera citerade fält

csv.reader hanterar citerade fält automatiskt: 'Alice, Jr.' förblir ett enda fält.
import csv, io
data = 'name,note\n"Smith, John","great guy"'
for row in csv.reader(io.StringIO(data)):
    print(row)

csv.DictReader

DictReader mappar varje rad till en OrderedDict (eller en vanlig dict i 3.8+) och använder rubrikraden som nycklar.
import csv, io
data = 'name,age\nAlice,30\nBob,25'
for row in csv.DictReader(io.StringIO(data)):
    print(row['name'], row['age'])

Typkonvertering

CSV-värden är alltid strängar. Konvertera dem uttryckligen: int(row['age']), float(row['price']).
import csv, io
data = 'item,price\napple,1.5\nbanana,0.75'
for row in csv.DictReader(io.StringIO(data)):
    print(row['item'], float(row['price'])*2)

Hantera teckenkodning

open(file, encoding='utf-8-sig') hanterar UTF-8 BOM, som är vanligt i CSV-filer som skapats av Excel.
# with open('data.csv', encoding='utf-8-sig', newline='') as f:
#     reader = csv.DictReader(f)
print('encoding demo')

Stora CSV-filer

csv.reader är lazy — den läser en rad i taget. Ni behöver inte läsa in hela filen i minnet.
import csv, io
data = '\n'.join(f'{i},{i*2}' for i in range(1000))
reader = csv.reader(io.StringIO(data))
print(sum(int(row[0]) for row in reader))

Identifiera dialekten

csv.Sniffer().sniff(sample) identifierar automatiskt avgränsaren och citeringsstilen.
import csv, io
data = 'a|b|c\n1|2|3'
sniff = csv.Sniffer().sniff(data[:100])
print('delimiter:', sniff.delimiter)
for row in csv.reader(io.StringIO(data), dialect=sniff):
    print(row)

Snabbkontroll

Vilken parameter bör ni alltid ange när ni öppnar en CSV-fil med open()?

Sammanfattning

csv.reader: rader som listor med strängar. DictReader: rader som dictionaries. Öppna alltid med newline=''. Hantera teckenkodningen för Excel-filer. Konvertera typer uttryckligen.

Fortsätt

Fortsätt så! Gå vidare till nästa lektion.
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Läsa CSV med csv.reader” gratis?

Ja – hela texten till ”Läsa CSV med csv.reader” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Läsa CSV med csv.reader”?

Läs CSV-filer rad för rad och få åtkomst till kolumner med index. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Läsa CSV med csv.reader”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. JSON-kodning och avkodning
  2. Hantera nästlade JSON-strukturer
  3. Läsa CSV med csv.reader
  4. Skriva CSV med csv.DictWriter
← Tillbaka till Python Academy