Cara membaca dan membuat fail CSV menggunakan python

Cara membaca dan membuat fail CSV menggunakan python

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
Cara membaca dan membuat fail CSV menggunakan python

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
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