Python Academy · Pelajaran

Membaca CSV dengan csv.reader

Baca fail CSV baris demi baris dan akses lajur mengikut indeks.

Pelajaran 3 daripada 414 langkah

Membaca CSV dengan csv.reader ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Pengenalan

Modul csv Python mengendalikan kerumitan fail CSV: medan berpetik, pembatas dan pengakhiran baris yang berbeza.

Membuka Fail CSV

with open('data.csv', newline='') as f: ialah cara yang disyorkan — newline='' membolehkan modul csv mengendalikan pengakhiran baris.
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)

Asas csv.reader

csv.reader(f) mengembalikan pengulang baris, dengan setiap baris sebagai senarai rentetan.
import csv, io
data = 'a,b,c\n1,2,3\n4,5,6'
for row in csv.reader(io.StringIO(data)):
    print(row)

Melangkau Pengepala

next(reader) melangkau baris pengepala. Atau gunakan csv.DictReader untuk mengakses lajur mengikut nama.
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)

Pembatas Tersuai

csv.reader(f, delimiter=';') membaca fail yang dipisahkan dengan koma bernoktah. Ia berfungsi dengan mana-mana pembatas satu aksara.
import csv, io
data = 'a;b;c\n1;2;3'
for row in csv.reader(io.StringIO(data), delimiter=';'):
    print(row)

Mengendalikan Medan Berpetik

csv.reader mengendalikan medan berpetik secara automatik: 'Alice, Jr.' kekal sebagai satu medan.
import csv, io
data = 'name,note\n"Smith, John","great guy"'
for row in csv.reader(io.StringIO(data)):
    print(row)

csv.DictReader

DictReader memetakan setiap baris kepada OrderedDict (atau dict biasa dalam 3.8+) dengan menggunakan baris pengepala sebagai kunci.
import csv, io
data = 'name,age\nAlice,30\nBob,25'
for row in csv.DictReader(io.StringIO(data)):
    print(row['name'], row['age'])

Penukaran Jenis

Nilai CSV sentiasa berupa rentetan. Tukarkannya secara jelas: 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)

Mengendalikan Pengekodan

open(file, encoding='utf-8-sig') mengendalikan UTF-8 BOM (yang lazim dalam CSV yang dijana Excel).
# with open('data.csv', encoding='utf-8-sig', newline='') as f:
#     reader = csv.DictReader(f)
print('encoding demo')

Fail CSV Besar

csv.reader bersifat malas — ia membaca satu baris pada satu masa. Anda tidak perlu memuatkan seluruh fail ke dalam memori.
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))

Mengesan Dialek

csv.Sniffer().sniff(sample) mengesan pembatas dan gaya pemetikan secara automatik.
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)

Semakan Pantas

Apakah parameter yang patut sentiasa ditetapkan apabila membuka fail CSV dengan open()?

Imbas Kembali

csv.reader: baris sebagai senarai rentetan. DictReader: baris sebagai kamus. Sentiasa buka dengan newline=''. Kendalikan pengekodan untuk fail Excel. Tukar jenis secara jelas.

Teruskan

Sila teruskan usaha! Beralih ke pelajaran seterusnya.
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “Membaca CSV dengan csv.reader” percuma?

Ya — teks penuh “Membaca CSV dengan csv.reader” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Membaca CSV dengan csv.reader”?

Baca fail CSV baris demi baris dan akses lajur mengikut indeks. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Membaca CSV dengan csv.reader” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengekodan dan Penyahkodan JSON
  2. Mengendalikan Struktur JSON Bersarang
  3. Membaca CSV dengan csv.reader
  4. Menulis CSV dengan csv.DictWriter
← Kembali ke Python Academy