csv.writer() în Python

CSV Python 3.0+ (QUOTE_STRINGS, QUOTE_NOTNULL: 3.12+)

Scrie liste de valori într-un fișier CSV, cu ghilimele puse automat unde trebuie.

Sintaxă
w = csv.writer(fisier, delimiter=",", quoting=csv.QUOTE_MINIMAL)
w.writerow(rand)
w.writerows(randuri)

Ce face csv.writer()

csv.writer(f) returnează un obiect cu metodele writerow(lista) (un rând) și writerows(liste) (mai multe). Valorile care conțin separatorul, ghilimele sau rânduri noi sunt puse automat între ghilimele.

quoting controlează ghilimelele: QUOTE_MINIMAL (implicit), QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, iar din 3.12 QUOTE_STRINGS și QUOTE_NOTNULL. Pentru Excel în română, delimiter=";" și encoding="utf-8-sig" (cu BOM) fac ca diacriticele și coloanele să apară corect.

Parametri

Parametru Descriere
fisier Fișierul deschis pentru scriere, cu newline="".
delimiter, quoting... Opțiuni de format.

Ce returnează

Un obiect writer.

Exemple

Exemplul 1: Export pentru Excel

import csv
from pathlib import Path
produse = [["Pâine", 4.5, 20], ['Cafea "Arabica"', 32.9, 5], ["Lapte; 1L", 7, 0]]
with open("produse.csv", "w", encoding="utf-8", newline="") as f:
    w = csv.writer(f, delimiter=";")
    w.writerow(["produs", "preț", "stoc"])
    w.writerows(produse)
print(Path("produse.csv").read_text(encoding="utf-8"))

Rezultat

produs;preț;stoc
Pâine;4.5;20
"Cafea ""Arabica""";32.9;5
"Lapte; 1L";7;0

Exemplul 2: Moduri de ghilimele

import csv, io
for mod in ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_STRINGS"]:
    buf = io.StringIO()
    csv.writer(buf, quoting=getattr(csv, mod)).writerow(["Ana", 25, None, "a,b"])
    print(f"{mod:17}", buf.getvalue(), end="")

Rezultat

QUOTE_MINIMAL     Ana,25,,"a,b"
QUOTE_ALL         "Ana","25","","a,b"
QUOTE_NONNUMERIC  "Ana",25,"","a,b"
QUOTE_STRINGS     "Ana",25,,"a,b"

Greșeli frecvente

  • Deschizi fișierul fără newline="" și pe Windows apare un rând gol după fiecare rând.

Comenzi înrudite