CSV (format pliku)
CSV (ang. comma-separated values, wartości rozdzielone przecinkiem) – format przechowywania danych w plikach tekstowych i odpowiadający mu typ MIME text/csv.
Specyfikacja formatu
Istnieje wiele implementacji standardu CSV – wiele z nich nie trzyma się ściśle wszystkich określonych tutaj zasad. Stanowią one jednak dobrze ugruntowaną i potwierdzoną dokumentem RFC 4180 część wspólną.
Końce linii
- Poszczególne rekordy rozdzielone są znakami końca linii CRLF.
- Ostatnia linia w pliku może nie zawierać znaku końca.
- Znak CRLF może być elementem pola, które musi wtedy być ujęte w cudzysłowy.
Separator
- Wartości pól zgodnie z nazwą formatu rozdzielone są przecinkami.
- Jako separator pól bywa także stosowany znak średnika (lub inny zgodnie z ustawieniami regionalnymi systemu) albo tabulator, jednak zgodnie z RFC 4180 jest to niezalecane. W jednym pliku może być użyty tylko jeden rodzaj separatora.
Cudzysłów
- Wartości pól mogą być ujęte w cudzysłowy.
- Wartości zawierające używany znak separatora (przecinek, średnik, znak tabulacji lub znaki końca linii) muszą być ujęte w cudzysłowy.
- Aby w treści pola umieścić cudzysłów należy wpisać znak cudzysłowu dwukrotnie, całą wartość ujmując w cudzysłowy (por. przykłady).
Uwagi
- Spacje i inne białe znaki (w szczególności te przyległe do separatorów) należą do pól.
- Pierwsza linia może stanowić nagłówek zawierający nazwy pól rekordów.
Przykłady
Przykładowe dane w arkuszu kalkulacyjnym:
A | B | C | |
1 | Kowalski | Jan | Kłodzko |
2 | Nowak | Zenon | Szczecin |
3 | Brzęczyszczykiewicz | Grzegorz | Chrząszczyżewoszyce |
i te same dane zapisane w postaci dokumentu CSV:
Kowalski,Jan,Kłodzko Nowak,Zenon,Szczecin Brzęczyszczykiewicz,Grzegorz,Chrząszczyżewoszyce
Znaki specjalne:
imię,opis,ocena Andrzej Nowak,fajny,4 "Jan Wiśniewski","fajny","2" Kowalski,"wiecznie pyta ""która godzina"", ale może być",5
Obsługa CSV w różnych aplikacjach
Format CSV jako prostszy niż format DBF jest obsługiwany przez większość arkuszy kalkulacyjnych i programów bazodanowych, jednak wspomniana dowolność wyboru separatorów ogranicza jego przenośność. Aby obejść to utrudnienie, tworzy się specjalne makra lub pozwala na konfigurowanie separatorów.
Filtr konwersji CSV z pakietu Microsoft Office pracuje przy założeniu, że plik CSV używa przecinka jako separatora, tymczasem Microsoft Excel i Access wyświetlają i zapisują plik CSV w formacie zgodnym z ustawieniami regionalnymi systemu, czyli w przypadku języka polskiego używa średnika zamiast przecinka do rozdzielania pól. Aby umożliwić automatyczną konwersję, tworzone są dedykowane makra.
Calc z pakietu OpenOffice.org pozwala na konfigurację filtra konwersji, w tym wybór separatorów niezależny od ustawień regionalnych.
Biblioteki programistyczne
- Dla języka Perl w archiwum CPAN dostępnych jest wiele bibliotek do obsługi formatu CSV[1].
- Biblioteka standardowa języka Ruby zawiera klasę CSV[2].
- Biblioteka standardowa PHP zawiera funkcje fgetcsv i fputcsv[3].
- Język R posiada w pakiecie utils funkcje do obsługi pliku csv (read.csv i write.csv).
- Biblioteka standardowa języka Python zawiera moduł csv[4].
Linki zewnętrzne
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files (ang.)
- How To: The Comma Separated Value (CSV) File Format – Popularny opis formatu CSV (ang.)
- The CSV format specification – Definicja formatu CSV zapisana w rozszerzonej notacji BNF (ang.)