Pytonorm

Hur man hanterar CSV-filer i Python

Hur man hanterar CSV-filer i Python
Den här artikeln kommer att behandla en handledning om hantering av "csv" -filer med Python. Termen "csv" står för "kommaseparerade värden" där varje rad eller rad innehåller textbaserade värden avgränsade med komma. I vissa fall används också "semikolon" istället för "komma" för att separera värden. Detta skiljer dock inte mycket åt filformatsreglerna och logiken för att hantera båda typerna av separatorer förblir densamma.

CSV-filformat används oftast för underhåll av databaser och kalkylark. Den första raden i en CSV-fil används oftast för att definiera kolumnfält medan andra återstående rader betraktas som rader. Denna struktur gör det möjligt för användare att presentera tabelldata med hjälp av CSV-filer. CSV-filer kan redigeras i valfri textredigerare. Men applikationer som LibreOffice Calc erbjuder avancerade redigeringsverktyg, sorterings- och filterfunktioner.

Läser data från CSV-filer med Python

CSV-modulen i Python låter dig läsa, skriva och manipulera all data som lagras i CSV-filer. För att kunna läsa en CSV-fil måste du använda metoden "läsare" från Pythons "csv" -modul som ingår i Pythons standardbibliotek.

Tänk på att du har en CSV-fil som innehåller följande data:

Mango, banan, äpple, apelsin
50,70,30,90

Den första raden i filen definierar varje kolumnkategori, namn på frukt i detta fall. Den andra raden lagrar värden under varje kolumn (lager-i-hand). Alla dessa värden avgränsas med ett komma. Om du skulle öppna den här filen i ett kalkylprogram som LibreOffice Calc, skulle det se ut så här:

Nu för att läsa värden från ”frukter.csv ”-fil med Pythons“ csv ”-modul, måste du använda“ läsare ”-metoden i följande format:

importera csv
med öppen ("frukter.csv ") som fil:
data_läsare = csv.läsare (fil)
för rad i data_läsare:
skriva ut (rad)

Den första raden i exemplet ovan importerar “csv” -modulen. Därefter används "med öppen" uttalande för att säkert öppna en fil som är lagrad på din hårddisk ("frukter.csv ”i detta fall). Ett nytt "data_reader" -objekt skapas genom att anropa "läsare" -metoden från "csv" -modulen. Denna "läsare" -metod tar ett filnamn som ett obligatoriskt argument, så hänvisningen till "frukter.csv ”skickas till den. Därefter körs ett "för" loop-uttalande för att skriva ut varje rad från "frukterna.csv-fil. Efter att ha kört kodprovet som nämns ovan bör du få följande utdata:

['50', '70', '30', '90']

Om du vill tilldela radnummer som ska matas ut, kan du använda funktionen "räkna upp" som tilldelar ett nummer till varje objekt i en iterabel (från och med 0 om det inte ändras).

importera csv
med öppen ("frukter.csv ") som fil:
data_läsare = csv.läsare (fil)
för index, rad i enumerate (data_reader):
skriva ut (index, rad)

Variabeln "index" håller räkningen för varje element. Efter att ha kört kodprovet som nämns ovan bör du få följande utdata:

0 ['Mango', 'Banana', 'Apple', 'Orange']
1 ['50', '70', '30', '90']

Eftersom den första raden i en "csv" -fil vanligtvis innehåller kolumnrubriker kan du använda funktionen "räkna upp" för att extrahera dessa rubriker:

importera csv
med öppen ("frukter.csv ") som fil:
data_läsare = csv.läsare (fil)
för index, rad i enumerate (data_reader):
om index == 0:
rubriker = rad
tryck (rubriker)

"If" -blocket i uttalandet ovan kontrollerar om indexet är lika med noll (första raden i "fruits.csv-fil). Om ja, tilldelas värdet på variabeln "linje" till en ny variabel "rubriker". Efter att ha kört kodprovet ovan bör du få följande utdata:

['Mango', 'Banana', 'Apple', 'Orange']

Observera att du kan använda din egen avgränsare när du ringer ”csv.läsare-metoden med hjälp av ett valfritt "avgränsar" -argument i följande format:

importera csv
med öppen ("frukter.csv ") som fil:
data_läsare = csv.läsare (fil, avgränsare = ";")
för rad i data_läsare:
skriva ut (rad)

Eftersom i en csv-fil är varje kolumn associerad med värden i rad, kanske du vill skapa ett Python-ordboksobjekt när du läser data från en "csv-fil". För att göra det måste du använda metoden “DictReader”, som visas i koden nedan:

importera csv
med öppen ("frukter.csv ") som fil:
data_läsare = csv.DictReader (fil)
för rad i data_läsare:
skriva ut (rad)

Efter att ha kört kodprovet som nämns ovan bör du få följande utdata:

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'

Så nu har du ett ordbokobjekt som associerar enskilda kolumner med motsvarande värden i raderna. Det här fungerar bra om du bara har en rad. Låt oss anta att ”frukterna.csv-filen innehåller nu en ytterligare rad som anger hur många dagar det tar för fruktstocken att försvinna.

Mango, banan, äpple, apelsin
50,70,30,90
3,1,6,4

När du har flera rader kommer att köra samma kodprov ovan att producera olika utdata.

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'
'Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'

Detta kanske inte är perfekt eftersom du kanske vill mappa alla värden som hör till en kolumn till ett nyckel-värdepar i en Python-ordlista. Prova istället det här kodexemplet:

importera csv
med öppen ("frukter.csv ") som fil:
data_läsare = csv.DictReader (fil)
data_dict =
för rad i data_läsare:
för nyckel, värde i rad.artiklar ():
data_dict.setdefault (nyckel, [])
data_dict [nyckel].append (värde)
skriva ut (data_dict)

Efter att ha kört kodprovet som nämns ovan bör du få följande utdata:

'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']

En "for" -slinga används på varje element i "DictReader" -objektet för att slinga över nyckel-värdepar. En ny Python-ordboksvariabel ”data_dict” definierades innan det. Det kommer att lagra slutliga datakartningar. Under det andra "for" loop-blocket används Python-ordlistans "setdefault" -metod. Denna metod tilldelar ett ordlistanyckel ett värde. Om nyckel-värdeparet inte finns skapas en ny från de angivna argumenten. Så i det här fallet kommer en ny tom lista att tilldelas en nyckel om den inte redan finns. Slutligen läggs "värde" till motsvarande nyckel i det slutliga "data_dict" -objektet.

Skriva data till en CSV-fil

För att skriva data till en “csv” -fil måste du använda metoden “skrivare” från modulen “csv”. I exemplet nedan läggs en ny rad till de befintliga ”frukterna.csv-fil.

importera csv
med öppen ("frukter.csv "," a ") som fil:
data_writer = csv.författare (fil)
data_writer.författare ([3,1,6,4])

Det första uttalandet öppnar filen i "lägg till" -läge, betecknad med argumentet "a". Därefter kallas "författarmetoden" och hänvisningen till "frukter.csv-filen skickas till den som ett argument. Metoden "writerow" skriver eller lägger till en ny rad i filen.

Om du vill konvertera Python-ordlistan till en "csv" -struktur och spara utdata i en "csv" -fil, prova den här koden:

importera csv
med öppen ("frukter.csv "," w ") som fil:
rubriker = ["Mango", "Banana", "Apple", "Orange"]
data_writer = csv.DictWriter (fil, fältnamn = rubriker)
data_writer.skrivhuvud ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)

Efter att ha öppnat en tom ”frukt.csv ”-fil med ett” med öppet ”uttalande definieras en ny variabel” rubriker ”som innehåller kolumnrubriker. Ett nytt objekt "data_writer" skapas genom att anropa "DictWriter" -metoden och ge den referens till "frukterna.csv-fil och ett ”fältnamn” -argument. I nästa rad skrivs kolumnrubriker till filen med "skrivhuvud" -metoden. De sista två påståendena lägger till nya rader i motsvarande rubriker som skapades i föregående steg.

Slutsats

CSV-filer ger ett snyggt sätt att skriva data i tabellformat. Pythons inbyggda "csv" -modul gör det enkelt att hantera data som finns tillgängliga i "csv" -filer och implementera ytterligare logik på den.

Mus Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Dual Display Mouse Manager låter dig kontrollera och konfigurera musrörelser mellan flera skärmar genom att sakta ner dess rörelser nära gränsen. Wind...
Mus WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
Om du vill förbättra standardfunktionerna för din muspekare, använd freeware WinMouse. Det lägger till fler funktioner som hjälper dig att få ut det m...
Mus Mus vänsterklicka på knappen fungerar inte på Windows 10
Mus vänsterklicka på knappen fungerar inte på Windows 10
Om du använder en dedikerad mus med din bärbara dator eller stationära dator men musens vänsterklick-knapp fungerar inte på Windows 10/8/7 av någon an...