Jak czytać i tworzyć pliki CSV za pomocą Pythona

Jak czytać i tworzyć pliki CSV za pomocą Pythona

CSV jest akronimem „wartości oddzielonych przecinków”. Plik CSV to zwykły dokument tekstowy używany do reprezentowania i wymiany danych tabelarycznych. Każdy wiersz w pliku CSV reprezentuje „jednostkę”, a każda kolumna reprezentuje jego atrybut. Kolumny są zwykle oddzielone przecinkiem, ale inne znaki mogą być używane jako separator pola zamiast tego. W tym samouczku zobaczymy, jak czytać i tworzyć pliki CSV za pomocą Pythona, a konkretnie CSV moduł, który jest częścią
Biblioteka standardowa języka.

W tym samouczku się nauczysz:

  • Jak odczytać wiersze CSV jako listę strun
  • Jak czytać CSV jako listę słowników
  • Jak utworzyć CSV za pomocą Pythona
  • Jak utworzyć CSV, zaczynając od listy słowników
Jak czytać i tworzyć pliki CSV za pomocą Pythona

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie Python3
Inny Podstawowa znajomość programowania Pythona i obiektowego
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

CSV - wartość oddzielona przecinka

Jak już wspomnieliśmy we wprowadzeniu tego samouczka, a CSV to po prostu prosty zwykły plik tekstowy, sformatowany w sposób, który pozwala nam reprezentować i wymieniać dane tabelaryczne. Każdy wiersz w pliku CSV reprezentuje pewien rodzaj bytu, z wyjątkiem
Pierwszy rząd, który zwykle zawiera tytuły pola. Zobaczmy przykład. Załóżmy, że chcemy reprezentować postacie z książki Władcy Pierścieni w formacie CSV:

Imię, Race Frodo, Hobbit Aragorn, człowiek Legolas, Elf Gimli, krasnolud 

Powyższy jest trywialnym przykładem treści pliku CSV. Jak widać, użyliśmy , (przecinek) jako separator pola. Zapisujemy te dane w pliku o nazwie Lotr.CSV. Zobaczmy, jak możemy go przeczytać za pomocą programowania Python
język i CSV moduł.

Czytanie pliku CSV

Aby wchodzić w interakcje z plikiem CSV z Pythonem, pierwszą rzeczą, którą musimy zrobić, jest zaimportowanie CSV moduł. Napiszmy prosty skrypt, tylko kilka wierszy kodu:

#!/usr/bin/env python3 import csv, jeśli __name__ == '__main__': z otwartym („LOTR.csv ', newline = ") jako csvfile: czytnik = csv.czytnik (CSVFILE) dla wiersza w czytniku: print (wiersz) 


W tym przykładzie przypuszczamy, że skrypt, który stworzyliśmy powyżej (nazwijmy to scenariusz.py) jest w tym samym katalogu pliku CSV i wspomniany katalog jest naszym obecnym pracą.

Pierwszą rzeczą, którą zrobiliśmy, było import CSV moduł; Następnie otworzyliśmy plik w trybie odczytu (domyślnie) z menedżerem kontekstowym, abyśmy byli pewni, że obiekt pliku jest zawsze zamknięty, gdy istnieje tłumacze z blok, nawet jeśli wystąpi jakiś błąd. Możesz również zauważyć, że użyliśmy Nowa linia argument otwarty funkcja, aby określić pusty ciąg jako znak nowej linii. Jest to środek bezpieczeństwa, ponieważ, jak stwierdzono w CSV moduł
dokumentacja:

Jeśli newline = "nie zostanie określone, nowe linie osadzone wewnątrz cytowanych pól nie będą interpretowane poprawnie, a na platformach używających \ r \ n Zakończenia linii na zapisie zostanie dodane dodatkowe \ r. Określenie newline = "powinno być zawsze bezpieczne, ponieważ moduł CSV wykonuje własne (uniwersalne) obsługę nowej linii.

CSVfile Obiekt reprezentuje nasz otwarty plik: przekazujemy go jako argument do CSV.czytelnik funkcja, która zwraca obiekt czytnika, który odwołujemy za pośrednictwem CSV_READER zmienny. Używamy tego obiektu do iterowania przez każdy wiersz pliku, który jest zwracany jako lista ciągów. W tym przypadku po prostu je drukujemy. Jeśli wykonamy skrypt, otrzymamy następujący wynik:

$ ./scenariusz.py ['imienia', 'rasa'] ['frodo', 'hobbit'] ['Aragorn', 'Man'] ['Legoolas', 'elf'] ['gimli', 'dwarf'] 

To było dość łatwe, prawda?? Co jeśli postać inna niż przecinek jest używana jako separator pola? W takim przypadku moglibyśmy użyć SYMITER parametr funkcji i określić znak, którego należy użyć. Powiedzmy, że postać jest |. Napisalibyśmy:

CSV_READER = CSV.czytnik (csvfile, delimiter = "|") 
Kopiuj

Przeczytaj pola CSV w słowniku

Ten, którego użyliśmy powyżej, to prawdopodobnie najłatwiejszy sposób, jaki możemy użyć do odczytania pliku CSV z Pythonem. CSV moduły definiują również Dictreader klasa, która pozwala nam mapować każdy wiersz w pliku CSV na słownik, w którym klucze są nazwy pola, a wartości są ich rzeczywistą zawartością z rzędu. Zobaczmy przykład. Oto jak modyfikujemy nasz skrypt:

#!/usr/bin/env python3 import csv, jeśli __name__ == '__main__': z otwartym („LOTR.csv ', newline = ") jako csvfile: czytnik = csv.DICTREADER (CSVFILE) dla wiersza w czytniku: print (wiersz) 
Kopiuj

Dictreader Klasy Constructor obowiązkowy pierwszym argumentem jest obiekt pliku utworzony po otwarciu pliku. Jeśli uruchomimy skrypt, tym razem uzyskamy następujący wynik:

„Nazwa”: „frodo”, „rasa”: „hobbit” „nazwa”: „aragorn”, „rasa”: „man” „name”: „legoolas”, „rasa”: „elf”  „Name”: „gimli”, „rasa”: „krasnolud” 

Jak już powiedziano, pola zawarte w pierwszym rzędzie są używane jako klucze słownikowe; Ale co, jeśli pierwszy wiersz pliku nie zawiera nazw pola? W takim przypadku możemy je określić za pomocą Nazwy polowe parametr Dictreader Konstruktor klas:

czytnik = CSV.DicTreader (CSVFILE, FieldNames = [„Nazwa”, „Race]) 
Kopiuj

Utwórz plik CSV

Do tej pory widzieliśmy, jak odczytać dane z pliku CSV, zarówno jako list. Teraz zobaczmy, jak utworzyć plik CSV. Jak zawsze zaczynamy od przykładu i niż to wyjaśniamy. Wyobraź sobie, że chcemy programowo utworzyć plik CSV, który utworzyliśmy wcześniej ręcznie. Oto kod, który byśmy napisali:

#!/usr/bin/env python3 import csv, jeśli __name__ == '__main__': z otwartym („LOTR.csv ', „w”, newline = ”) jako csvfile: pisarz = csv.pisarz (CSVFILE) dla wiersza w („name”, „rasa”), („frodo”, „hobbit”), („aragorn”, „man”), („legoals”, „elf”), (' Gimli ', „krasnolud”)): pisarz.pisarz (wiersz) 


Pierwszą rzeczą, którą powinieneś zauważyć, jest to, że tym razem otworzyliśmy Lotr.CSV Plik w trybie zapisu (w). W tym trybie plik jest tworzony, jeśli nie istnieje, i jest kadłubowy W przeciwnym razie (sprawdź nasz artykuł na temat wykonywania operacji wejściowych/wyjściowych w plikach z Pythonem, jeśli chcesz dowiedzieć się więcej na ten temat).

Zamiast czytelnik obiekt, tym razem stworzyliśmy pisarz jeden, używając pisarz funkcja zapewniona w CSV moduł. Parametry ta funkcja akceptuje są bardzo podobne do cech zaakceptowanych przez czytelnik jeden. Moglibyśmy na przykład określić alternatywny ogranicznik za pomocą parametru o tej samej nazwie.

Ponieważ w tym przypadku znamy już wszystkie wiersze CSV wcześniej, możemy uniknąć używania pętli i napisać je wszystkie jednocześnie za pomocą Pisarz Metoda obiektu pisarza:

#!/usr/bin/env python3 import csv, jeśli __name__ == '__main__': z otwartym („LOTR.csv ', „w”, newline = ”) jako csvfile: pisarz = csv.pisarz (CSVFILE).Writerows (((„name”, „rasa”), („frodo”, „hobbit”), („aragorn”, „man”), („legoolas”, „elf”), („gimli”, „dwarf” '))) 

Utwórz plik CSV z obiektem DictWriter

CSV Moduł zapewnia DictWriter klasa, która pozwala nam mapować słownik do rzędu CSV. Może to być bardzo przydatne, gdy dane, nad którymi pracujemy. Zobaczmy przykład.
Załóżmy, że nasze dane o znakach LOTR są reprezentowane jako lista słowników (być może, ponieważ zostaną zwrócone z połączenia API wykonanego z upraszanie moduł). Oto, co moglibyśmy napisać, aby stworzyć CSV na podstawie tego:

#!/usr/bin/env python3 import csv postacie_data = ['name': 'frodo', 'rasa': 'hobbit', 'name': 'aragorn', 'rasa': 'man', '' Nazwa „:„ legoolas ”,„ rasa ”:„ elf ”, „ nazwa ”:„ gimli ”,„ rasa ”:„ dwarf ”] if __name__ == '__main__': with open ('lotr.csv ', „w”) jako csvfile: pisarz = csv.DictWriter (CSVFILE, FieldNames = („name”, „rasa”)) pisarz.pisarz zapisu ().Writerowie (postacie_data) 
Kopiuj

Zobaczmy, co zrobiliśmy. Najpierw stworzyliśmy instancję DictWriter klasa, przekazując jako argumenty obiekt pliku (CSVfile) i niż Nazwy polowe, które muszą być sekwencją wartości, które należy użyć jako nazwy pola CSV i określić, w jakiej kolejności wartości zawarte w każdym słowniku powinny zostać zapisane do pliku. Podczas gdy w przypadku Dictreader Konstruktor klas ten parametr jest opcjonalny, tutaj jest obowiązkowy i łatwo jest zrozumieć, dlaczego.

Po utworzeniu pisarz obiekt, nazwaliśmy to Writeheader Metoda: Ta metoda służy do utworzenia początkowego wiersza CSV, zawierającego nazwy pola, które przekazaliśmy w konstruktorze.

Wreszcie zadzwoniliśmy Pisarz Metoda pisania wszystkich wierszy CSV jednocze postacie_data zmienny). Wszystkie zrobione!

Wnioski

W tym artykule nauczyliśmy się podstaw czytania i tworzenia plików CSV za pomocą języka programowania Python. Widzieliśmy, jak odczytać rzędy pliku CSV zarówno jako lista ciągów, jak i w słowniku za pomocą Dictreader Obiekt i jak utworzyć nowy plik CSV zapisujący jeden wiersz w tym czasie lub wszystkie wiersze jednocześnie. Na koniec widzieliśmy, jak utworzyć plik CSV, zaczynając od listy słowników, które można zwrócić z połączenia API. Jeśli chcesz dowiedzieć się więcej o CSV Moduł Python, zapoznaj się z oficjalną dokumentacją.

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Mastering Bash Script Loops
  • Zagnieżdżone pętle w skryptach Bash
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak manipulować arkuszami kalkulacyjnymi Excel z Pythonem i…
  • Jak sformatować dane z kolumną w Linux
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Big Data Manipulacja dla zabawy i zysku Część 1
  • Manipulacja Big Data dla zabawy i zysku Część 2
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux