Python

Sådan håndteres CSV-filer i Python

Sådan håndteres CSV-filer i Python
Denne artikel dækker en tutorial om håndtering af "csv" -filer ved hjælp af Python. Udtrykket "csv" står for "kommaseparerede værdier", hvor hver række eller linje indeholder tekstbaserede værdier afgrænset med kommaer. I nogle tilfælde bruges "semikolon" også i stedet for "komma" til at adskille værdier. Dette gør dog ikke meget forskel på filformatreglerne, og logikken til at håndtere begge typer separatorer forbliver den samme.

CSV-filformat bruges mest til vedligeholdelse af databaser og regneark. Den første linje i en CSV-fil bruges mest til at definere kolonnefelter, mens andre resterende linjer betragtes som rækker. Denne struktur giver brugerne mulighed for at præsentere tabeldata ved hjælp af CSV-filer. CSV-filer kan redigeres i enhver teksteditor. Imidlertid giver applikationer som LibreOffice Calc avancerede redigeringsværktøjer, sorterings- og filterfunktioner.

Læsning af data fra CSV-filer ved hjælp af Python

CSV-modulet i Python giver dig mulighed for at læse, skrive og manipulere alle data, der er gemt i CSV-filer. For at læse en CSV-fil skal du bruge metoden “læser” fra Pythons “csv” -modul, der er inkluderet i Pythons standardbibliotek.

Overvej, at du har en CSV-fil, der indeholder følgende data:

Mango, banan, æble, appelsin
50,70,30,90

Den første række i filen definerer hver kolonnekategori, navn på frugt i dette tilfælde. Den anden linje gemmer værdier under hver kolonne (lager-i-hånd). Alle disse værdier er afgrænset med et komma. Hvis du skulle åbne denne fil i et regnearksapplikation som LibreOffice Calc, ville det se sådan ud:

Nu for at læse værdier fra “frugter.csv ”-fil ved hjælp af Pythons“ csv ”-modul, skal du bruge“ læser ”-metoden i følgende format:

importere csv
med åben ("frugter.csv ") som fil:
data_reader = csv.læser (fil)
til linje i data_læseren:
print (linje)

Den første linje i ovenstående prøve importerer “csv” -modulet. Dernæst bruges "med åben" erklæring til sikkert at åbne en fil, der er gemt på din harddisk ("frugter.csv ”i dette tilfælde). Et nyt "data_reader" -objekt oprettes ved at kalde "læser" -metoden fra "csv" -modulet. Denne "læser" -metode tager et filnavn som et obligatorisk argument, så henvisningen til "frugter.csv ”sendes til den. Derefter køres en "for" -løkkeerklæring for at udskrive hver linje fra "frugterne.csv ”-fil. Efter at have kørt ovenstående kodeprøve, skal du få følgende output:

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

Hvis du vil tildele linjenumre til output, kan du bruge funktionen "enumerate", der tildeler et nummer til hvert punkt i en iterabel (startende fra 0, medmindre det ændres).

importere csv
med åben ("frugter.csv ") som fil:
data_reader = csv.læser (fil)
for indeks, linje i enumerate (data_reader):
udskrive (indeks, linje)

Variablen "indeks" holder optællingen for hvert element. Efter at have kørt ovenstående kodeprøve, skal du få følgende output:

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

Da den første linje i en "csv" -fil typisk indeholder kolonneoverskrifter, kan du bruge "enumerate" -funktionen til at udtrække disse overskrifter:

importere csv
med åben ("frugter.csv ") som fil:
data_reader = csv.læser (fil)
for indeks, linje i enumerate (data_reader):
hvis indeks == 0:
overskrifter = linje
print (overskrifter)

"Hvis" -blokken i udsagnet ovenfor kontrollerer, om indekset er lig med nul (første linje i "frugter.csv ”fil). Hvis ja, så tildeles værdien af ​​variablen "linje" til en ny variabel "overskrifter". Efter at have kørt kodeeksemplet ovenfor, skal du få følgende output:

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

Bemærk, at du kan bruge din egen afgrænser, når du kalder “csv.reader ”-metode ved hjælp af et valgfrit” afgrænsnings ”-argument i følgende format:

importere csv
med åben ("frugter.csv ") som fil:
data_reader = csv.læser (fil, afgrænser = ";")
til linje i data_læseren:
print (linje)

Da hver kolonne i en csv-fil er forbundet med værdier i en række, kan du oprette et Python-"ordbog" -objekt, når du læser data fra en "csv" -fil. For at gøre det skal du bruge metoden “DictReader” som vist i koden nedenfor:

importere csv
med åben ("frugter.csv ") som fil:
datalæser = csv.DictReader (fil)
til linje i data_læseren:
print (linje)

Efter at have kørt ovenstående kodeprøve, skal du få følgende output:

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

Så nu har du et ordbogobjekt, der forbinder individuelle kolonner med deres tilsvarende værdier i rækkerne. Dette fungerer fint, hvis du kun har en række. Lad os antage, at ”frugterne.csv ”-filen indeholder nu en ekstra række, der angiver, hvor mange dage det vil tage for frugtbestanden at gå til grunde.

Mango, banan, æble, appelsin
50,70,30,90
3,1,6,4

Når du har flere rækker, vil kørsel af den samme kodeeksempel ovenfor producere forskellige output.

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

Dette er muligvis ikke ideelt, da du måske vil kortlægge alle værdier, der hører til en kolonne, til et nøgleværdipar i en Python-ordbog. Prøv denne kodeeksempel i stedet:

importere csv
med åben ("frugter.csv ") som fil:
data_reader = csv.DictReader (fil)
data_dict =
til linje i data_læseren:
for nøgle, værdi i linje.varer ():
data_dict.setdefault (nøgle, [])
data_dict [nøgle].tilføje (værdi)
udskrive (data_dict)

Efter at have kørt ovenstående kodeprøve, skal du få følgende output:

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

En "for" -sløjfe bruges på hvert element i "DictReader" -objektet til at løbe over nøgleværdipar. En ny Python-ordbogvariabel "data_dict" er defineret før det. Den gemmer endelige datatilknytninger. Under den anden "for" loop-blok bruges Python-ordboks "setdefault" -metode. Denne metode tildeler en ordbogenøgle en værdi. Hvis nøgleværdipar ikke findes, oprettes der en ny ud fra de angivne argumenter. Så i dette tilfælde tildeles en ny tom liste til en nøgle, hvis den ikke allerede findes. Endelig tilføjes "værdi" til den tilsvarende nøgle i det endelige "data_dict" -objekt.

Skrivning af data til en CSV-fil

For at skrive data til en “csv” -fil skal du bruge metoden “forfatter” fra “csv” -modulet. Eksemplet nedenfor tilføjer en ny række til de eksisterende “frugter.csv ”-fil.

importere csv
med åben ("frugter.csv "," a ") som fil:
data_writer = csv.forfatter (fil)
data_writer.writerow ([3,1,6,4])

Den første sætning åbner filen i "tilføj" -tilstand, betegnet med argumentet "a". Dernæst kaldes "forfatter" -metoden og henvisningen til "frugter.csv ”-fil sendes til den som et argument. Metoden “writerow” skriver eller tilføjer en ny række til filen.

Hvis du vil konvertere Python-ordbog til en "csv" -struktur og gemme output i en "csv" -fil, kan du prøve denne kode:

importere csv
med åben ("frugter.csv "," w ") som fil:
headings = ["Mango", "Banana", "Apple", "Orange"]
data_writer = csv.DictWriter (fil, feltnavne = overskrifter)
data_writer.skrivehoved ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)

Efter åbning af en tom ”frugt.csv ”-fil ved hjælp af en“ med åben ”sætning defineres en ny variabel“ overskrifter ”, der indeholder kolonneoverskrifter. Et nyt objekt "data_writer" oprettes ved at kalde "DictWriter" -metoden og sende den henvisning til "frugterne.csv-fil og et "feltnavne" -argument. I den næste linje skrives kolonneoverskrifter til filen ved hjælp af "skrivhoved" -metoden. De sidste to udsagn tilføjer nye rækker til deres tilsvarende overskrifter oprettet i det foregående trin.

Konklusion

CSV-filer giver en pæn måde at skrive data i tabelformat på. Pythons indbyggede “csv” -modul gør det nemt at håndtere data tilgængelige i “csv” -filer og implementere yderligere logik på det.

Bedste spilkonsolemulatorer til Linux
Denne artikel viser en liste over populære spilkonsolemuleringssoftware, der er tilgængelig til Linux. Emulation er et softwarekompatibilitetslag, der...
Bedste Linux Distros til spil i 2021
Linux-operativsystemet er kommet langt fra dets originale, enkle, serverbaserede udseende. Dette operativsystem er forbedret enormt i de senere år og ...
Sådan registreres og streames din gaming-session på Linux
Tidligere blev spil kun betragtet som en hobby, men med tiden oplevede spilindustrien en enorm vækst med hensyn til teknologi og antallet af spillere....