Format fail CSV paling sering digunakan untuk memelihara pangkalan data dan spreadsheet. Baris pertama dalam fail CSV paling sering digunakan untuk menentukan bidang lajur sementara baris lain yang tersisa dianggap sebagai baris. Struktur ini membolehkan pengguna menyajikan data tabel menggunakan fail CSV. Fail CSV dapat diedit di mana-mana penyunting teks. Walau bagaimanapun, aplikasi seperti LibreOffice Calc menyediakan alat penyuntingan, penyortiran, dan fungsi penapis lanjutan.
Membaca Data dari Fail CSV Menggunakan Python
Modul CSV di Python membolehkan anda membaca, menulis dan memanipulasi data yang disimpan dalam fail CSV. Untuk membaca fail CSV, anda perlu menggunakan kaedah "pembaca" dari modul "csv" Python yang disertakan dalam pustaka standard Python.
Pertimbangkan bahawa anda mempunyai fail CSV yang mengandungi data berikut:
Mangga, Pisang, Epal, Jeruk50,70,30,90
Baris pertama fail menentukan setiap kategori lajur, nama buah dalam kes ini. Baris kedua menyimpan nilai di bawah setiap lajur (stok di tangan). Semua nilai ini dibatasi oleh koma. Sekiranya anda membuka fail ini dalam aplikasi spreadsheet seperti LibreOffice Calc, ia akan kelihatan seperti ini:
Sekarang untuk membaca nilai dari "buah-buahan.fail csv "menggunakan modul" csv "Python, anda perlu menggunakan kaedah" pembaca "dalam format berikut:
import csvdengan buah-buahan terbuka (".csv ") sebagai fail:
data_reader = csv.pembaca (fail)
untuk baris dalam data_reader:
cetak (garisan)
Baris pertama dalam contoh di atas mengimport modul "csv". Seterusnya, pernyataan “dengan terbuka” digunakan untuk membuka fail yang disimpan di cakera keras anda dengan selamat (“buah-buahan.csv ”dalam kes ini). Objek "data_reader" baru dibuat dengan memanggil kaedah "pembaca" dari modul "csv". Kaedah "pembaca" ini mengambil nama file sebagai argumen wajib, jadi rujukan ke "buah-buahan.csv ”diteruskan kepadanya. Seterusnya, pernyataan gelung “untuk” dijalankan untuk mencetak setiap baris dari “buah-buahan.fail csv ”. Setelah menjalankan contoh kod yang disebutkan di atas, anda akan mendapat output berikut:
['50', '70', '30', '90']Sekiranya anda ingin memberikan nombor baris ke output, anda dapat menggunakan fungsi "menghitung" yang memberikan nombor untuk setiap item secara berulang (bermula dari 0 kecuali diubah).
import csvdengan buah-buahan terbuka (".csv ") sebagai fail:
data_reader = csv.pembaca (fail)
untuk indeks, garis dalam bilangan (data_reader):
cetak (indeks, garis)
Pemboleh ubah "indeks" menyimpan kiraan untuk setiap elemen. Setelah menjalankan contoh kod yang disebutkan di atas, anda akan mendapat output berikut:
0 ['Mango', 'Banana', 'Apple', 'Orange']1 ['50', '70', '30', '90']
Oleh kerana baris pertama dalam file "csv" biasanya berisi tajuk lajur, Anda dapat menggunakan fungsi "menghitung" untuk mengekstrak tajuk berikut:
import csvdengan buah-buahan terbuka (".csv ") sebagai fail:
data_reader = csv.pembaca (fail)
untuk indeks, garis dalam bilangan (data_reader):
jika indeks == 0:
tajuk = garis
cetak (tajuk)
Blok “if” dalam pernyataan di atas memeriksa apakah indeks sama dengan sifar (baris pertama dalam “buah-buahan.fail csv). Sekiranya ya, maka nilai pemboleh ubah "baris" diberikan kepada pemboleh ubah "tajuk" baru. Selepas, menjalankan contoh kod di atas, anda akan mendapat output berikut:
['Mango', 'Banana', 'Apple', 'Orange']Perhatikan bahawa anda boleh menggunakan pembatas anda sendiri ketika memanggil “csv.kaedah pembaca "dengan menggunakan argumen" pembatas "pilihan dalam format berikut:
import csvdengan buah-buahan terbuka (".csv ") sebagai fail:
data_reader = csv.pembaca (fail, pembatas = ";")
untuk baris dalam data_reader:
cetak (garisan)
Oleh kerana dalam file csv, setiap kolom dikaitkan dengan nilai berturut-turut, Anda mungkin ingin membuat objek "kamus" Python ketika membaca data dari fail "csv". Untuk melakukannya, anda perlu menggunakan kaedah "DictReader", seperti yang ditunjukkan dalam kod di bawah:
import csvdengan buah-buahan terbuka (".csv ") sebagai fail:
data_reader = csv.DictReader (fail)
untuk baris dalam data_reader:
cetak (garisan)
Setelah menjalankan contoh kod yang disebutkan di atas, anda akan mendapat output berikut:
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'Jadi sekarang anda mempunyai objek kamus yang mengaitkan lajur individu dengan nilai yang sesuai dalam baris. Ini berfungsi dengan baik jika anda hanya mempunyai satu baris. Mari kita anggap bahawa "buah-buahan.fail csv ”kini merangkumi baris tambahan yang menentukan berapa hari yang diperlukan agar stok buah musnah.
Mangga, Pisang, Epal, Jeruk50,70,30,90
3,1,6,4
Apabila anda mempunyai beberapa baris, menjalankan contoh kod yang sama di atas akan menghasilkan output yang berbeza.
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90''Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'
Ini mungkin tidak sesuai kerana anda mungkin ingin memetakan semua nilai yang berkaitan dengan satu lajur ke satu pasangan nilai-kunci dalam kamus Python. Cuba contoh kod ini:
import csvdengan buah terbuka (".csv ") sebagai fail:
data_reader = csv.DictReader (fail)
data_dict =
untuk baris dalam data_reader:
untuk kunci, nilai sejajar.item ():
data_keputusan.setdefault (kunci, [])
data_dict [kunci].tambahkan (nilai)
cetak (data_dict)
Setelah menjalankan contoh kod yang disebutkan di atas, anda akan mendapat output berikut:
'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']Gelung "untuk" digunakan pada setiap elemen objek "DictReader" untuk menggulung pasangan nilai-kunci. Pembolehubah kamus Python baru "data_dict" ditakrifkan sebelum itu. Ia akan menyimpan pemetaan data akhir. Di bawah blok gelung "untuk" kedua, kaedah "setdefault" kamus Python digunakan. Kaedah ini memberikan nilai pada kunci kamus. Sekiranya pasangan nilai-kunci tidak wujud, pasangan baru dibuat dari argumen yang ditentukan. Jadi dalam kes ini, senarai kosong baru akan diberikan kepada kunci jika belum ada. Terakhir, "nilai" ditambahkan pada kunci yang sesuai dalam objek "data_dict" terakhir.
Menulis Data ke Fail CSV
Untuk menulis data ke fail "csv", anda perlu menggunakan kaedah "penulis" dari modul "csv". Contoh di bawah ini akan menambahkan baris baru pada buah-buahan yang ada.fail csv ”.
import csvdengan buah-buahan terbuka (".csv "," a ") sebagai fail:
data_writer = csv.penulis (fail)
penulis_ data.penulis ([3,1,6,4])
Pernyataan pertama membuka fail dalam mod "append", dilambangkan dengan argumen "a". Selanjutnya kaedah "penulis" dipanggil dan rujukan untuk "buah-buahan.fail csv ”diteruskan kepadanya sebagai argumen. Kaedah "penulis" menulis atau menambah baris baru ke fail.
Sekiranya anda ingin menukar kamus Python ke struktur fail "csv" dan menyimpan output dalam fail "csv", cuba kod ini:
import csvdengan buah-buahan terbuka (".csv "," w ") sebagai fail:
tajuk = ["Mangga", "Pisang", "Apple", "Oren"]
data_writer = csv.DictWriter (fail, nama bidang = tajuk)
penulis_ data.ketua tulis ()
penulis_ data.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
penulis_ data.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)
Setelah membuka buah kosong.file csv "menggunakan pernyataan" dengan terbuka "," tajuk "pemboleh ubah baru didefinisikan yang berisi tajuk lajur. Objek baru "data_writer" dibuat dengan memanggil metode "DictWriter" dan menyampaikannya ke "buah-buahan".fail csv "dan argumen" nama lapangan ". Pada baris berikutnya, tajuk lajur ditulis ke file menggunakan metode "writeheader". Dua pernyataan terakhir menambah baris baru pada tajuk yang sesuai yang dibuat pada langkah sebelumnya.
Kesimpulannya
Fail CSV menyediakan cara yang kemas untuk menulis data dalam format jadual. Modul "csv" bawaan Python menjadikannya mudah untuk mengendalikan data yang tersedia dalam fail "csv" dan menerapkan logik selanjutnya.