0Pricing
Python Academy · Lekcja

Odczytywanie CSV za pomocą csv.reader

Proszę odczytywać pliki CSV wiersz po wierszu i uzyskiwać dostęp do kolumn za pomocą indeksu.

Odczytywanie CSV za pomocą csv.reader to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Wbudowany moduł csv języka Python obsługuje złożoności plików CSV: pola w cudzysłowach, separatory i różne zakończenia wierszy.

Otwieranie pliku CSV

with open('data.csv', newline='') as f: to zalecany sposób — newline='' pozwala modułowi csv obsługiwać zakończenia wierszy.
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)

Podstawy csv.reader

csv.reader(f) zwraca iterator wierszy, w którym każdy wiersz jest listą ciągów znaków.
import csv, io
data = 'a,b,c\n1,2,3\n4,5,6'
for row in csv.reader(io.StringIO(data)):
    print(row)

Pomijanie nagłówka

next(reader) pomija wiersz nagłówka. Można też użyć csv.DictReader, aby uzyskiwać dostęp do kolumn po nazwie.
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)

Niestandardowy separator

csv.reader(f, delimiter=';') odczytuje pliki, w których separatorem jest średnik. Działa z dowolnym separatorem składającym się z jednego znaku.
import csv, io
data = 'a;b;c\n1;2;3'
for row in csv.reader(io.StringIO(data), delimiter=';'):
    print(row)

Obsługa pól w cudzysłowach

csv.reader automatycznie obsługuje pola w cudzysłowach: 'Alice, Jr.' pozostaje jednym polem.
import csv, io
data = 'name,note\n"Smith, John","great guy"'
for row in csv.reader(io.StringIO(data)):
    print(row)

csv.DictReader

DictReader mapuje każdy wiersz na OrderedDict (lub zwykły dict w wersji 3.8+) i używa wiersza nagłówka jako kluczy.
import csv, io
data = 'name,age\nAlice,30\nBob,25'
for row in csv.DictReader(io.StringIO(data)):
    print(row['name'], row['age'])

Konwersja typów

Wartości CSV są zawsze ciągami znaków. Należy konwertować je jawnie: 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)

Obsługa kodowania

open(file, encoding='utf-8-sig') obsługuje BOM UTF-8 (często występujący w plikach CSV generowanych przez program Excel).
# with open('data.csv', encoding='utf-8-sig', newline='') as f:
#     reader = csv.DictReader(f)
print('encoding demo')

Duże pliki CSV

csv.reader działa leniwie — odczytuje jeden wiersz naraz. Nie trzeba wczytywać całego pliku do pamięci.
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))

Wykrywanie dialektu

csv.Sniffer().sniff(sample) automatycznie wykrywa separator i sposób cytowania.
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)

Szybkie sprawdzenie

Jaki parametr należy zawsze ustawić podczas otwierania pliku CSV za pomocą open()?

Podsumowanie

csv.reader: wiersze jako listy ciągów znaków. DictReader: wiersze jako słowniki. Plik należy zawsze otwierać z newline=''. W przypadku plików Excela należy obsłużyć kodowanie. Typy należy konwertować jawnie.

Kontynuuj naukę

Tak trzymać! Proszę przejść do następnej lekcji.

Często zadawane pytania

Czy lekcja „Odczytywanie CSV za pomocą csv.reader” jest bezpłatna?

Tak — pełny tekst „Odczytywanie CSV za pomocą csv.reader” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Odczytywanie CSV za pomocą csv.reader”?

Proszę odczytywać pliki CSV wiersz po wierszu i uzyskiwać dostęp do kolumn za pomocą indeksu. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Odczytywanie CSV za pomocą csv.reader”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Kodowanie i dekodowanie JSON
  2. Praca z zagnieżdżonymi strukturami JSON
  3. Odczytywanie CSV za pomocą csv.reader
  4. Zapisywanie CSV za pomocą csv.DictWriter
← Powrót do Python Academy