Vad är en CSV-fil?
En CSV-fil är en typ av vanlig textfil som använder specifik strukturering för att ordna tabelldata. CSV är ett vanligt format för datautbyte eftersom det är kompakt, enkelt och allmänt. Många onlinetjänster tillåter sina användare att exportera tabelldata från webbplatsen till en CSV-fil. CSV-filer öppnas i Excel, och nästan alla databaser har ett verktyg för att tillåta import från CSV-fil. Standardformatet definieras av rader och kolumner. Dessutom avslutas varje rad med en ny rad för att börja nästa rad. Även inom raden separeras varje kolumn med ett komma.
I den här handledningen lär du dig:
- Vad är en CSV-fil?
- CSV-exempelfil.
- Python CSV-modul
- CSV-modulfunktioner
- Läser CSV-filer
- Läsa som ordbok
- Skriva till CSV-filer
- Läser CSV-filer med Pandas
- Skriva till CSV-filer med Pandas
CSV-exempelfil.
Data i form av tabeller kallas också CSV (kommaseparerade värden) - bokstavligen "kommaseparerade värden." Detta är ett textformat som är avsett för presentation av tabelldata. Varje rad i filen är en rad i tabellen. Värdena för enskilda kolumner är åtskilda av en separatorsymbol - ett komma (,), ett semikolon (;) eller en annan symbol. CSV kan enkelt läsas och bearbetas av Python.
Tänk på följande Tabe
Tabelldata
Programmeringsspråk | Designad av | Dök upp | Förlängning |
Pytonorm | Guido van Rossum | 1991 | .py |
Java | James Gosling | 1995 | .java |
C ++ | Bjarne Stroustrup | 1983 | .cpp |
Du kan representera denna tabell i csv enligt nedan.
CSV-data
Programmeringsspråk, Designad av, Visad, Extension
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C ++, Bjarne Stroustrup, 1983, .cpp
Som du kan se är varje rad en ny rad och varje kolumn separeras med ett komma. Detta är ett exempel på hur en CSV-fil ser ut.
Ladda ner CSV-data
Python CSV-modul
Python tillhandahåller en CSV-modul för att hantera CSV-filer. För att läsa / skriva data måste du gå igenom rader i CSV. Du måste använda delningsmetoden för att hämta data från angivna kolumner.
CSV-modulfunktioner
I CSV-moduldokumentation hittar du följande funktioner:
- csv.field_size_limit - returnera maximal fältstorlek
- csv.get_dialect - hämta dialekten som är associerad med namnet
- csv.list_dialects - visa alla registrerade dialekter
- csv.reader - läs data från en csv-fil
- csv.register_dialect - associera dialekt med namn
- csv.writer - skriv data till en csv-fil
- csv.unregister_dialect - ta bort dialekten som är associerad med namnet på dialektregistret
- csv.QUOTE_ALL - Citera allt, oavsett typ.
- csv.QUOTE_MINIMAL - Citatfält med specialtecken
- csv.QUOTE_NONNUMERIC - Citera alla fält som inte är siffror
- csv.QUOTE_NONE - Citera inte något i utdata
I den här handledningen kommer vi bara att fokusera på läsar- och skrivarfunktionerna som gör att du kan redigera, modifiera och manipulera data i en CSV-fil.
Hur man läser en CSV-fil
För att läsa data från CSV-filer måste du använda läsarfunktionen för att skapa ett läsarobjekt.
Läsarfunktionen är utvecklad för att ta varje rad i filen och göra en lista över alla kolumner. Sedan måste du välja den kolumn du vill att variabeln ska få.
Det låter mycket mer invecklat än det är. Låt oss ta en titt på det här exemplet och vi får reda på att det inte är så svårt att arbeta med csv-filen.
#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)
När du kör programmet ovan blir resultatet:
['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']
Hur man läser en CSV som ordbok
Du kan också använda DictReader för att läsa CSV-filer. Resultaten tolkas som en ordbok där rubrikraden är nyckeln och andra rader är värden.
Tänk på följande kod
#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)
Resultatet av denna kod är:
OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])
Och detta sätt att läsa data från CSV-fil är mycket enklare än tidigare metod. Detta är dock inte det bästa sättet att läsa data.
Hur man skriver CSV-fil
När du har en uppsättning data som du vill lagra i en CSV-fil måste du använda skrivarfunktionen (). För att itera informationen över raderna (raderna) måste du använda funktionenwrow ().
Tänk på följande exempel. Vi skriver data i en fil "writeData.csv" där avgränsaren är en apostrof.
#import necessary modulesimport csvwith open('X:\writeData.csv', mode='w') as file:writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)#way to write to csv filewriter.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])writer.writerow(['Java', 'James Gosling', '1995', '.java'])writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])
Resultatet i csv-filen är:
Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp
Läser CSV-filer med Pandas
Pandas är ett open source-bibliotek som gör att du kan utföra datamanipulation i Python. Pandor är ett enkelt sätt att skapa, manipulera och ta bort data.
Du måste installera pandasbiblioteket med kommandot pip install pandas
. I Windows kommer du att utföra detta kommando i kommandotolken medan du är i Linux i terminalen.
Att läsa CSV i en panda DataFrame är mycket snabbt och enkelt:
#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)
Resultat:
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
Mycket användbart bibliotek. På bara tre rader kod får du samma resultat som tidigare. Pandor vet att den första raden i CSV innehöll kolumnnamn, och den kommer att använda dem automatiskt.
Skriva till CSV-filer med Pandas
Att skriva till CSV-fil med Pandas är lika enkelt som att läsa. Här kan du övertyga i det. Först måste du skapa DataFrame baserat på följande kod.
from pandas import DataFrameC = {'Programming language': ['Python','Java', 'C++'],'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],'Appeared': ['1991', '1995', '1985'],'Extension': ['.py', '.java', '.cpp'],}df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be storedprint (df)
Här är resultatet
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
Och CSV-filen skapas på den angivna platsen.
Slutsats
Så nu vet du hur man använder metoden 'csv' och även läser och skriver data i CSV-format. CSV-filer används ofta i programvara eftersom de är lätta att läsa och hantera, och deras lilla storlek gör dem relativt snabba för bearbetning och överföring.
CSV-modulen har olika funktioner och klasser som gör att du enkelt kan läsa och skriva. Du kan titta på den officiella Python-dokumentationen och hitta några mer intressanta tips och moduler. CSV är det bästa sättet att spara, visa och skicka data. Egentligen är det inte så svårt att lära sig som det verkar i början. Men med lite övning kommer du att behärska det.
Pandas är ett bra alternativ för att läsa CSV-filer.
Det finns också andra sätt att analysera textfiler med bibliotek som ANTLR, PLY och PlyPlus. De kan alla hantera kraftig tolkning, och om enkel strängmanipulation inte fungerar finns det vanliga uttryck som du kan använda.