Python Academy · Lektion

Skrivning af CSV med csv.DictWriter

Skriv strukturerede data til CSV med DictReader og DictWriter.

Lektion 4 af 414 trin

Skrivning af CSV med csv.DictWriter er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Introduktion

csv.writer og csv.DictWriter skriver Python-data i CSV-format og håndterer automatisk citationstegn og afgrænsere.

Grundlæggende om csv.writer

csv.writer(f).writerow(row) skriver en enkelt række. writerows(rows) skriver flere.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
writer.writerow(['name', 'age'])
writer.writerow(['Alice', 30])
print(buf.getvalue())

Adfærd for citationstegn

Som standard sættes felter med kommaer eller citationstegn automatisk i citationstegn. quoting=csv.QUOTE_ALL sætter alle felter i citationstegn.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, quoting=csv.QUOTE_ALL)
writer.writerow(['Alice', 'NYC, NY', 30])
print(buf.getvalue())

csv.DictWriter

DictWriter skriver ordbøger som rækker. Angiv fieldnames. writeheader() skriver kolonneoverskrifterne.
import csv, io
buf = io.StringIO()
fields = ['name', 'age']
writer = csv.DictWriter(buf, fieldnames=fields)
writer.writeheader()
writer.writerow({'name': 'Alice', 'age': 30})
print(buf.getvalue())

writerows() til flere rækker

writer.writerows(list_of_rows) er mere effektivt end at kalde writerow() i en løkke.
import csv, io
buf = io.StringIO()
writer = csv.DictWriter(buf, fieldnames=['x','y'])
writer.writeheader()
writer.writerows([{'x':1,'y':2},{'x':3,'y':4}])
print(buf.getvalue())

Brugerdefineret afgrænser

csv.writer(f, delimiter='\t') skriver tabulatoradskilte værdier (TSV).
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, delimiter='\t')
writer.writerow(['a', 'b', 'c'])
print(repr(buf.getvalue()))

Parameteren extrasaction

DictWriter(f, fieldnames, extrasaction='ignore') ignorerer lydløst ekstra nøgler i ordbogen i stedet for at udløse ValueError.
import csv, io
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name'], extrasaction='ignore')
w.writeheader()
w.writerow({'name': 'Alice', 'extra': 'ignored'})
print(buf.getvalue())

Skrivning til en rigtig fil

with open('out.csv','w',newline='',encoding='utf-8') as f: — brug altid newline='' og angiv tegnkodningen.
import csv, tempfile, os
tmp = tempfile.mktemp(suffix='.csv')
with open(tmp, 'w', newline='') as f:
    csv.writer(f).writerows([[1,2],[3,4]])
print(open(tmp).read())
os.unlink(tmp)

Tilføjelse til CSV

open(file, 'a') tilføjer data. Pas på ikke at skrive overskriften igen, når du tilføjer data.
import csv, io
buf = io.StringIO()
w = csv.writer(buf)
w.writerow(['x', 'y'])
print(buf.getvalue())

Streaming af store skrivninger

Skriv række for række — ophob ikke alle rækker i hukommelsen, før du skriver dem.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
for i in range(5):
    writer.writerow([i, i**2])
print(buf.getvalue())

Rundturstest

Skriv data til CSV, og læs dem derefter tilbage for at kontrollere, at de er korrekte.
import csv, io
original = [{'name':'Alice','age':'30'},{'name':'Bob','age':'25'}]
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name','age'])
w.writeheader()
w.writerows(original)
buf.seek(0)
read_back = list(csv.DictReader(buf))
print(read_back == original)

Hurtigt tjek

Hvilken DictWriter-metode skriver kolonnenavnene som den første række?

Opsummering

csv.writer: writerow/writerows. DictWriter: writeheader plus writerow/writerows. Åbn altid med newline=''. Brug extrasaction='ignore' til fleksible ordbøger.

Fortsæt

Bliv ved på den gode måde! Gå videre til den næste lektion.
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Skrivning af CSV med csv.DictWriter” gratis?

Ja — hele teksten til “Skrivning af CSV med csv.DictWriter” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Skrivning af CSV med csv.DictWriter”?

Skriv strukturerede data til CSV med DictReader og DictWriter. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Skrivning af CSV med csv.DictWriter”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. JSON-kodning og -afkodning
  2. Håndtering af indlejrede JSON-strukturer
  3. Læsning af CSV med csv.reader
  4. Skrivning af CSV med csv.DictWriter
← Tilbage til Python Academy