Pro správu databází a tabulek se nejčastěji používá formát souboru CSV. První řádek v souboru CSV se nejčastěji používá k definování polí sloupců, zatímco všechny ostatní zbývající řádky se považují za řádky. Tato struktura umožňuje uživatelům prezentovat tabulková data pomocí souborů CSV. Soubory CSV lze upravovat v libovolném textovém editoru. Aplikace jako LibreOffice Calc však poskytují pokročilé nástroje pro úpravy, funkce řazení a filtrování.
Čtení dat ze souborů CSV pomocí Pythonu
Modul CSV v Pythonu vám umožňuje číst, zapisovat a manipulovat s jakýmikoli daty uloženými v souborech CSV. Chcete-li číst soubor CSV, budete muset použít metodu „reader“ z modulu „csv“ v Pythonu, který je obsažen ve standardní knihovně Pythonu.
Vezměte v úvahu, že máte soubor CSV obsahující následující data:
Mango, banán, jablko, pomeranč50,70,30,90
První řádek souboru definuje každou kategorii sloupců, v tomto případě název plodů. Druhý řádek ukládá hodnoty pod každým sloupcem (sklad v ruce). Všechny tyto hodnoty jsou odděleny čárkou. Pokud byste tento soubor otevřeli v tabulkové aplikaci, jako je LibreOffice Calc, vypadalo by to takto:
Nyní číst hodnoty z „ovoce“.csv ”pomocí pythonovského„ csv “modulu, budete muset použít metodu„ reader “v následujícím formátu:
import csvs otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.čtečka (soubor)
pro řádek v data_reader:
tisk (řádek)
První řádek ve výše uvedeném vzorku importuje modul „csv“. Dále se příkaz „s otevřeným“ používá k bezpečnému otevření souboru uloženého na pevném disku („ovoce.CSV ”v tomto případě). Nový objekt „data_reader“ je vytvořen voláním metody „reader“ z modulu „csv“. Tato metoda „čtenáře“ bere název souboru jako povinný argument, takže odkaz na „ovoce“.csv “je předán. Dále se spustí příkaz smyčky „pro“, který vytiskne každý řádek z „ovoce“.soubor CSV. Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:
['50', '70', '30', '90']Pokud chcete výstupu přiřadit čísla řádků, můžete použít funkci „enumerate“, která každé položce přiřadí číslo v iterovatelném čísle (od 0, pokud se nezmění).
import csvs otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.čtečka (soubor)
pro index řádek ve výčtu (data_reader):
tisk (index, řádek)
Proměnná „index“ udržuje počet pro každý prvek. Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:
0 ['Mango', 'Banana', 'Apple', 'Orange']1 ['50', '70', '30', '90']
Protože první řádek v souboru „csv“ obvykle obsahuje záhlaví sloupců, můžete k extrahování těchto záhlaví použít funkci „enumerate“:
import csvs otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.čtečka (soubor)
pro index řádek ve výčtu (data_reader):
pokud index == 0:
nadpisy = řádek
tisk (nadpisy)
Blok „if“ ve výše uvedeném příkazu kontroluje, zda je index roven nule (první řádek v poli „ovoce“.soubor CSV “). Pokud ano, pak je hodnota proměnné „line“ přiřazena nové proměnné „headings“. Po spuštění výše uvedeného ukázkového kódu byste měli získat následující výstup:
['Mango', 'Banana', 'Apple', 'Orange']Pamatujte, že při volání „csv.metoda „čtenář“ pomocí volitelného argumentu „oddělovač“ v následujícím formátu:
import csvs otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.čtečka (soubor, oddělovač = ";")
pro řádek v data_reader:
tisk (řádek)
Protože v souboru CSV je každý sloupec spojen s hodnotami v řádku, možná budete chtít při čtení dat ze souboru „CSV“ vytvořit objekt „slovníku“ Pythonu. Chcete-li tak učinit, musíte použít metodu „DictReader“, jak je uvedeno v níže uvedeném kódu:
import csvs otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.DictReader (soubor)
pro řádek v data_reader:
tisk (řádek)
Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'Takže teď máte objekt slovníku, který spojuje jednotlivé sloupce s odpovídajícími hodnotami v řádcích. To funguje dobře, pokud máte pouze jeden řádek. Předpokládejme, že „ovoce.Soubor CSV ”nyní obsahuje další řádek, který určuje, kolik dní bude trvat, než zásoby ovoce zahynou.
Mango, banán, jablko, pomeranč50,70,30,90
3,1,6,4
Pokud máte více řádků, spuštění stejného ukázkového kódu výše vytvoří jiný výstup.
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90''Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'
To nemusí být ideální, protože možná budete chtít mapovat všechny hodnoty týkající se jednoho sloupce na jeden pár klíč – hodnota ve slovníku Pythonu. Místo toho vyzkoušejte tento ukázkový kód:
import csvs otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.DictReader (soubor)
data_dict =
pro řádek v data_reader:
pro klíč hodnota v řádku.položky ():
data_dict.setdefault (klíč, [])
data_dict [klíč].připojit (hodnota)
tisk (data_dict)
Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:
'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']Smyčka „pro“ se používá na každém prvku objektu „DictReader“ ke smyčce přes páry klíč – hodnota. Před tím je definována nová proměnná slovníku Pythonu „data_dict“. Bude ukládat konečné mapování dat. Pod druhým blokem smyčky „pro“ se používá metoda „setdefault“ slovníku Pythonu. Tato metoda přiřadí hodnotu klíči slovníku. Pokud pár klíč – hodnota neexistuje, vytvoří se ze zadaných argumentů nový. V tomto případě bude klíči přiřazen nový prázdný seznam, pokud již neexistuje. Nakonec je „hodnota“ připojena k odpovídajícímu klíči v konečném objektu „data_dict“.
Zápis dat do souboru CSV
Chcete-li zapsat data do souboru „csv“, budete muset použít metodu „write“ z modulu „csv“. Následující příklad přidá nový řádek k existujícím „plodům.soubor CSV.
import csvs otevřeným ("ovoce.".csv "," a ") jako soubor:
data_writer = csv.spisovatel (soubor)
data_writer.writerow ([3,1,6,4])
První příkaz otevře soubor v režimu „připojit“, označený argumentem „a“. Dále se nazývá metoda „spisovatele“ a odkaz na „ovoce“.csv ”soubor je mu předán jako argument. Metoda „writerow“ zapisuje nebo přidává do souboru nový řádek.
Pokud chcete převést slovník Pythonu na strukturu souboru „csv“ a uložit výstup do souboru „csv“, zkuste tento kód:
import csvs otevřeným ("ovoce.".csv "," w ") jako soubor:
nadpisy = ["Mango", "banán", "jablko", "oranžová"]
data_writer = csv.DictWriter (soubor, názvy polí = nadpisy)
data_writer.writeheader ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)
Po otevření prázdné „ovoce.Soubor CSV pomocí příkazu „s otevřeným“ je definována nová proměnná „záhlaví“, která obsahuje záhlaví sloupců. Nový objekt „data_writer“ je vytvořen voláním metody „DictWriter“ a předáním odkazu na „ovoce“.soubor csv a argument „názvy polí“. Na dalším řádku se záhlaví sloupců zapisují do souboru pomocí metody „writeheader“. Poslední dva příkazy přidávají nové řádky k jejich odpovídajícím nadpisům vytvořeným v předchozím kroku.
Závěr
Soubory CSV poskytují čistý způsob zápisu dat v tabulkovém formátu. Integrovaný modul „csv“ v Pythonu usnadňuje práci s daty dostupnými v souborech „csv“ a implementuje do nich další logiku.