Cara membaca dan membuat fail CSV menggunakan python
- 3671
- 361
- Clarence Tromp
CSV adalah akronim "nilai terpisah koma". Fail CSV adalah dokumen teks biasa yang digunakan untuk mewakili dan menukar data jadual. Setiap baris dalam fail CSV mewakili "entiti", dan setiap lajur mewakili atributnya. Lajur biasanya dipisahkan oleh koma tetapi aksara lain boleh digunakan sebagai pemisah medan dan bukannya. Dalam tutorial ini kita akan melihat cara membaca dan membuat fail CSV menggunakan Python dan khususnya CSV modul, yang merupakan sebahagian daripada
Perpustakaan Standard Bahasa.
Dalam tutorial ini anda akan belajar:
- Cara membaca baris CSV sebagai senarai rentetan
- Cara membaca CSV sebagai senarai kamus
- Cara membuat CSV menggunakan python
- Cara membuat CSV bermula dari senarai kamus
Keperluan perisian dan konvensyen yang digunakan
Kategori | Keperluan, konvensyen atau versi perisian yang digunakan |
---|---|
Sistem | Pengedaran bebas |
Perisian | Python3 |
Yang lain | Pengetahuan asas mengenai pengaturcaraan berorientasikan python dan objek |
Konvensyen | # - Memerlukan komando linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$-memerlukan komando Linux yang diberikan sebagai pengguna yang tidak berkadar biasa |
CSV - nilai terpisah koma
Seperti yang telah kita sebutkan dalam pengenalan tutorial ini, a CSV hanya fail teks biasa yang mudah, diformat dengan cara yang membolehkan kita mewakili dan menukar data jadual. Setiap baris dalam fail CSV mewakili entiti sejenis, kecuali
baris pertama yang biasanya mengandungi tajuk medan. Mari lihat contoh. Katakan kita ingin mewakili watak dari buku Lord of the Rings dalam format CSV:
Nama, Race Frodo, Hobbit Aragorn, Man Legolas, Elf Gimli, Kerdil
Yang di atas adalah contoh remeh kandungan fail CSV. Seperti yang anda lihat, kami menggunakan ,
(koma) sebagai pemisah medan. Kami menyimpan data tersebut dalam fail yang dipanggil LOTR.CSV
. Mari lihat bagaimana kita dapat membacanya menggunakan pengaturcaraan python
bahasa, dan CSV
modul.
Membaca fail CSV
Untuk berinteraksi dengan fail CSV dengan Python, perkara pertama yang perlu kita lakukan ialah mengimport CSV
modul. Mari tulis skrip mudah, hanya beberapa baris kod:
#!/usr/bin/env python3 import csv jika __name__ == '__main__': dengan terbuka ('lotr.csv ', newline = ") sebagai csvfile: reader = csv.pembaca (csvfile) untuk baris dalam pembaca: cetak (baris)
Dalam contoh ini kita menganggap bahawa skrip yang kita buat di atas (mari kita sebut Skrip.py
) berada dalam direktori yang sama dalam fail CSV, dan direktori itu adalah kerja semasa kami.
Perkara pertama yang kami lakukan ialah mengimport CSV
modul; Kemudian kami membuka fail dalam mod baca (lalai) dengan pengurus konteks, supaya kami yakin bahawa objek fail selalu ditutup apabila jurubahasa ada dengan
blok, walaupun beberapa jenis kesilapan berlaku. Anda juga dapat melihat bahawa kami menggunakan baris baru
hujah buka
berfungsi untuk menentukan rentetan kosong sebagai watak baru. Ini adalah langkah keselamatan, kerana, seperti yang dinyatakan dalam CSV
modul
Dokumentasi:
Jika newline = "tidak ditentukan, garis baru tertanam di dalam medan yang disebutkan tidak akan ditafsirkan dengan betul, dan pada platform yang menggunakan ending \ r \ n pada menulis tambahan \ r akan ditambah. Selalu selamat untuk menentukan newline = ", kerana modul CSV melakukan pengendalian baru (sejagat) sendiri.
The csvfile
objek mewakili fail dibuka kami: kami menyampaikannya sebagai hujah kepada CSV.pembaca
fungsi yang mengembalikan objek pembaca yang kami rujuk melalui csv_reader
pembolehubah. Kami menggunakan objek ini untuk melangkah melalui setiap baris fail, yang dikembalikan sebagai senarai rentetan. Dalam kes ini kita hanya mencetaknya. Sekiranya kita melaksanakan skrip, kami memperoleh hasil berikut:
$ ./skrip.py ['nama', 'bangsa'] ['frodo', 'hobbit'] ['aragorn', 'man'] ['legolas', 'elf'] ['gimli', 'kerdil']
Itu cukup mudah, bukan? Bagaimana jika watak selain koma digunakan sebagai pemisah medan? Sekiranya kita boleh menggunakan pembatas
parameter fungsi, dan tentukan watak yang harus digunakan. Katakanlah watak itu adalah |
. Kami akan menulis:
csv_reader = csv.Pembaca (CSVFile, Delimiter = "|")
Salinan Baca medan CSV dalam kamus
Yang kita gunakan di atas mungkin cara paling mudah yang dapat kita gunakan untuk membaca fail CSV dengan Python. The CSV
modul juga menentukan Dictreader
kelas, yang membolehkan kita memetakan setiap baris dalam fail CSV ke kamus, di mana kunci adalah nama medan dan nilai -nilai adalah kandungan sebenar mereka berturut -turut. Mari lihat contoh. Inilah cara kita mengubah suai skrip kita:
#!/usr/bin/env python3 import csv jika __name__ == '__main__': dengan terbuka ('lotr.csv ', newline = ") sebagai csvfile: reader = csv.Dictreader (csvfile) untuk baris dalam pembaca: cetak (baris)
Salinan The Dictreader
Kelas Pembina Kelas Mandatori Argumen Pertama adalah objek fail yang dibuat semasa kami membuka fail. Jika kita melancarkan skrip, kali ini kita memperoleh hasil berikut:
'Name': 'Frodo', 'Race': 'Hobbit' 'Name': 'Aragorn', 'Race': 'Man' 'Name': 'Legolas', 'Race': 'Elf' 'Name': 'gimli', 'bangsa': 'kerdil'
Seperti yang telah dikatakan, bidang yang terkandung dalam baris pertama, digunakan sebagai kunci kamus; Tetapi bagaimana jika baris pertama fail tidak mengandungi nama medan? Dalam hal ini kita dapat menentukannya dengan menggunakan Fieldname
parameter Dictreader
Pembina Kelas:
pembaca = CSV.Dictreader (csvfile, fieldNames = ['name', 'Race])
Salinan Buat fail CSV
Sehingga kini kita hanya melihat cara membaca data dari fail CSV, kedua -duanya sebagai senarai rentetan masing -masing mewakili baris, dan sebagai kamus. Sekarang mari kita lihat cara membuat fail CSV. Seperti biasa kita hanya bermula dengan contoh, dan daripada kita menerangkannya. Bayangkan kami mahu secara pemrograman membuat fail CSV yang kami buat secara manual sebelum ini. Inilah kod yang akan kami tulis:
#!/usr/bin/env python3 import csv jika __name__ == '__main__': dengan terbuka ('lotr.csv ',' w ', newline = ") sebagai csvfile: penulis = csv.penulis (csvfile) untuk baris dalam (('nama', 'bangsa'), ('frodo', 'hobbit'), ('aragorn', 'man'), ('legoals', 'elf'), (' Gimli ',' kerdil ')): penulis.Writerow (baris)
Perkara pertama yang perlu anda perhatikan ialah kali ini kami membuka LOTR.CSV
fail dalam mod tulis (w
). Dalam mod ini fail dibuat jika tidak wujud, dan dipotong Jika tidak (periksa artikel kami mengenai melakukan operasi input/output pada fail dengan python jika anda ingin mengetahui lebih lanjut mengenai subjek ini).
Bukan a pembaca objek, kali ini kami mencipta a penulis satu, menggunakan penulis
fungsi yang disediakan di CSV
modul. Parameter fungsi ini diterima sangat serupa dengan yang diterima oleh pembaca
satu. Sebagai contoh, kita boleh menentukan pemisah alternatif menggunakan parameter dengan nama yang sama.
Oleh kerana dalam kes ini kita sudah mengetahui semua baris CSV terlebih dahulu, kita dapat mengelakkan menggunakan gelung, dan menulis semuanya sekaligus menggunakan Writerows
kaedah objek penulis:
#!/usr/bin/env python3 import csv jika __name__ == '__main__': dengan terbuka ('lotr.csv ',' w ', newline = ") sebagai csvfile: penulis = csv.Penulis Penulis (CSVFile).Writerows ((('nama', 'bangsa'), ('frodo', 'hobbit'), ('aragorn', 'man'), ('legolas', 'elf'), ('gimli', 'kerdil kerdil ')))
Buat fail CSV dengan objek DictWriter
The CSV
Modul menyediakan a Dictwriter
kelas, yang membolehkan kita memetakan kamus ke baris CSV. Ini boleh menjadi sangat berguna apabila data yang kami sedang kerjakan datang dengan cara ini dan ingin mewakilinya dalam bentuk jadual. Mari lihat contoh.
Katakan data aksara LOTR kami diwakili sebagai senarai kamus (mungkin kerana ia akan dikembalikan dari panggilan API yang dibuat dengan permintaan
modul). Inilah yang boleh kita tulis untuk membuat CSV berdasarkannya:
#!/usr/bin/env python3 import csv aksara_data = ['name': 'frodo', 'bangsa': 'hobbit', 'name': 'aragorn', 'bangsa': 'man', ' Nama ':' Legolas ',' Race ':' Elf ', ' Name ':' Gimli ',' Race ':' Dwarf '] jika __name__ ==' __Main__ ': dengan terbuka (' lotr.csv ',' w ') sebagai csvfile: penulis = csv.DictWriter (CSVFile, FieldNames = ('Name', 'Race')) Penulis.Penulis WriteHeader ().penulis (aksara_data)
Salinan Mari lihat apa yang kita buat. Pertama kita mencipta contoh Dictwriter
kelas, lulus sebagai argumen objek fail (csvfile
) dan daripada Fieldname
, yang mestilah urutan nilai yang akan digunakan sebagai nama medan CSV, dan menentukan dalam susunan nilai yang terkandung dalam setiap kamus harus ditulis ke fail. Semasa dalam kes Dictreader
pembina kelas parameter ini adalah pilihan, di sini ia adalah wajib, dan mudah difahami mengapa.
Selepas membuat penulis objek, kami memanggilnya Writeheader
Kaedah: Kaedah ini digunakan untuk membuat baris CSV awal, yang mengandungi nama medan yang kami lalui dalam pembina.
Akhirnya, kami memanggil Writerows
kaedah untuk menulis semua baris CSV sekaligus, lulus senarai kamus sebagai argumen (di sini kita merujuknya dengan aksara_data
berubah). Semua selesai!
Kesimpulan
Dalam artikel ini, kami mempelajari asas -asas membaca dan membuat fail CSV menggunakan bahasa pengaturcaraan python. Kami melihat cara membaca baris fail CSV sebagai senarai rentetan dan dalam kamus menggunakan a Dictreader
objek, dan bagaimana membuat fail CSV baru menulis satu baris pada masa itu, atau semua baris sekaligus. Akhirnya, kami melihat cara membuat fail CSV bermula dari senarai kamus seperti yang dapat dikembalikan dari panggilan API. Sekiranya anda ingin mengetahui lebih lanjut mengenai CSV
Modul Python Sila rujuk dokumentasi rasmi.
Tutorial Linux Berkaitan:
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Menguasai Gelung Skrip Bash
- Gelung bersarang dalam skrip bash
- Perkara yang hendak dipasang di Ubuntu 20.04
- Cara memanipulasi spreadsheet Excel dengan python dan…
- Cara memformat data dengan lajur di Linux
- Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
- Manipulasi data besar untuk keseronokan dan keuntungan bahagian 1
- Manipulasi data besar untuk keseronokan dan keuntungan bahagian 2
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- « Idiom pemboleh ubah yang lebih maju untuk pengurusan sensitiviti kes
- Cara Menjana dan Mengurus Kekunci SSH di Linux »