Bekerja dengan data merupakan bahagian pengaturcaraan yang tidak dapat dielakkan, dan sebagai seseorang yang sering mendapati diri mereka separas lutut dalam pelbagai format fail, saya sentiasa menghargai cara Python memudahkan keseluruhan proses.
Satu format fail yang kerap muncul, terutamanya dalam analisis data, ialah fail CSV.
CSV, atau Nilai Dipisahkan Koma, ialah format pertukaran data yang popular kerana kesederhanaannya.
Nasib baik, Python dilengkapi dengan modul terbina dalam yang dipanggil csv, yang menjadikan kerja dengan fail ini sangat cekap.
Dalam artikel ini, saya akan membahagikan cara modul csv berfungsi dalam Python, daripada penggunaan asas kepada teknik yang lebih maju yang boleh menjimatkan banyak masa anda semasa memproses data.
Sebelum menyelami modul csv, mari mulakan dengan pemahaman asas tentang apa itu fail CSV.
Fail CSV pada asasnya ialah fail teks biasa di mana setiap baris mewakili baris data dan setiap nilai dipisahkan dengan koma (atau kadangkala pembatas lain seperti tab).
Berikut ialah contoh ringkas tentang rupanya:
Name,Age,Occupation Alice,30,Engineer Bob,25,Data Scientist Charlie,35,Teacher
Anda mungkin tertanya-tanya mengapa anda memerlukan modul csv sedangkan fail CSV hanyalah fail teks yang secara teorinya boleh dibaca menggunakan kaedah pengendalian fail standard Python.
Walaupun ini benar, fail CSV boleh mempunyai kerumitan—seperti koma terbenam, pemisah baris dalam sel dan pembatas berbeza—yang sukar dikendalikan secara manual.
Modul csv merumuskan semua ini, membolehkan anda menumpukan pada data anda.
Mari beralih ke kod.
Operasi paling biasa yang akan anda lakukan pada fail CSV ialah membaca kandungannya.
Fungsi csv.reader() dalam modul ialah alat yang mudah digunakan untuk itu.
Berikut ialah panduan langkah demi langkah tentang cara melakukannya.
Bacaan CSV Asas
import csv # Open a CSV file with open('example.csv', 'r') as file: reader = csv.reader(file) # Iterate over the rows for row in reader: print(row)
Ini ialah cara paling mudah untuk membaca fail CSV.
Csv.reader() mengembalikan lelaran, di mana setiap lelaran memberikan anda senarai yang mewakili baris fail.
Mengendalikan Pengepala
Kebanyakan fail CSV disertakan dengan pengepala di baris pertama, seperti nama lajur.
Jika anda tidak memerlukan pengepala ini, anda hanya boleh melangkau baris pertama semasa mengulang:
import csv with open('example.csv', 'r') as file: reader = csv.reader(file) # Skip header next(reader) for row in reader: print(row)
Kadangkala, saya bekerja dengan fail yang mengandungi gabungan data yang berguna dan tidak berkaitan, dan saya mendapati diri saya melangkau baris berdasarkan lebih daripada sekadar pengepala.
Anda boleh melakukan ini dengan mudah dalam gelung for.
DictReader: Cara yang Lebih Intuitif untuk Membaca Fail CSV
Jika fail CSV anda mempunyai pengepala, csv.DictReader() ialah satu lagi pilihan hebat yang membaca setiap baris sebagai kamus, dengan kuncinya ialah nama lajur:
import csv with open('example.csv', 'r') as file: reader = csv.DictReader(file) for row in reader: print(row)
Pendekatan ini boleh menjadikan kod anda lebih mudah dibaca dan intuitif, terutamanya apabila bekerja dengan set data yang besar.
Sebagai contoh, mengakses row['Name'] terasa lebih jelas daripada berurusan dengan akses berasaskan indeks seperti row[0].
Setelah anda membaca dan memproses data anda, kemungkinan besar anda akan mahu menyimpan atau mengeksportnya.
Fungsi csv.writer() ialah alat pilihan anda untuk menulis ke fail CSV.
Penulisan CSV Asas
import csv # Data to be written data = [ ['Name', 'Age', 'Occupation'], ['Alice', 30, 'Engineer'], ['Bob', 25, 'Data Scientist'], ['Charlie', 35, 'Teacher'] ] # Open a file in write mode with open('output.csv', 'w', newline='') as file: writer = csv.writer(file) # Write data to the file writer.writerows(data)
Fungsi writer.writerows() mengambil senarai senarai dan menulisnya ke fail CSV, di mana setiap senarai dalam mewakili satu baris data.
DictWriter: Cara Lebih Bersih untuk Menulis Fail CSV
Sama seperti kami mempunyai DictReader untuk membaca fail CSV ke dalam kamus, kami mempunyai DictWriter untuk menulis kamus ke CSV.
Kaedah ini amat berguna apabila anda ingin menentukan nama lajur anda secara eksplisit.
import csv # Data as list of dictionaries data = [ {'Name': 'Alice', 'Age': 30, 'Occupation': 'Engineer'}, {'Name': 'Bob', 'Age': 25, 'Occupation': 'Data Scientist'}, {'Name': 'Charlie', 'Age': 35, 'Occupation': 'Teacher'} ] # Open file for writing with open('output.csv', 'w', newline='') as file: fieldnames = ['Name', 'Age', 'Occupation'] writer = csv.DictWriter(file, fieldnames=fieldnames) # Write the header writer.writeheader() # Write the data writer.writerows(data)
Menggunakan DictWriter, anda mendapat antara muka yang bagus dan bersih untuk menulis kamus ke CSV sambil memastikan kod anda mudah dibaca dan ringkas.
Secara lalai, modul CSV menggunakan koma untuk memisahkan nilai, tetapi kadangkala anda mungkin menggunakan fail yang menggunakan pembatas lain, seperti tab atau koma bernoktah.
Modul csv menyediakan cara mudah untuk mengendalikan kes ini dengan menyatakan hujah pembatas.
import csv with open('example_tab.csv', 'r') as file: reader = csv.reader(file, delimiter='\t') for row in reader: print(row)
Saya telah menjumpai fail CSV yang menggunakan koma bernoktah dan bukannya koma—biasanya daripada sumber Eropah—dan berasa selesa untuk mengetahui bahawa modul csv Python mengendalikan perkara ini dengan mudah.
Sama ada koma, tab atau sebarang pembatas lain, modul csv telah membantu anda.
Bagaimana jika data anda mengandungi koma dalam medan, petikan atau pemisah baris?
Modul CSV secara automatik mengendalikan kes sedemikian dengan menggunakan mekanisme petikan.
Anda juga boleh mengawal cara petikan berfungsi menggunakan parameter petikan.
import csv data = [ ['Name', 'Occupation', 'Description'], ['Alice', 'Engineer', 'Works on, "cutting-edge" technology'], ['Bob', 'Data Scientist', 'Loves analyzing data.'] ] with open('complex.csv', 'w', newline='') as file: writer = csv.writer(file, quoting=csv.QUOTE_ALL) writer.writerows(data)
In this example, QUOTE_ALL ensures that every field is wrapped in quotes.
Other quoting options include csv.QUOTE_MINIMAL, csv.QUOTE_NONNUMERIC, and csv.QUOTE_NONE, giving you full control over how your CSV data is formatted.
Over the years, I’ve come to rely on the CSV format as a lightweight, efficient way to move data around, and Python’s csv module has been a trusty companion in that journey.
Whether you’re dealing with simple spreadsheets or complex, multi-line data fields, this module makes the process feel intuitive and effortless.
While working with CSVs may seem like a mundane task at first, it’s a gateway to mastering data manipulation.
In my experience, once you’ve conquered CSVs, you'll find yourself confidently tackling larger, more complex formats like JSON or SQL databases. After all, everything starts with the basics.
Atas ialah kandungan terperinci Panduan kepada Modul CSV Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!