CSV (format pliku)
Rozszerzenia pliku |
.csv |
---|---|
Typ MIME |
text/csv, text/csv;header |
Data opracowania |
październik 2005 |
Typ |
tekstowy format przechowywania danych tabelarycznych |
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
[edytuj | edytuj kod]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.[potrzebny przypis]
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[potrzebny przypis] 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, jednak pierwszy wiersz pliku CSV wg standardu ma takie samo znaczenie jak pozostałe.
Przykłady
[edytuj | edytuj kod]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
[edytuj | edytuj kod]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, takie same możliwości oferuje Calc z pakietu LibreOffice.org
Biblioteki programistyczne
[edytuj | edytuj kod]- 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].
Przypisy
[edytuj | edytuj kod]Linki zewnętrzne
[edytuj | edytuj kod]- Y. Shafranovich , Common Format and MIME Type for Comma-Separated Values (CSV) Files, RFC 4180, IETF, październik 2005, DOI: 10.17487/RFC4180, ISSN 2070-1721, OCLC 943595667 (ang.).
- How To: The Comma Separated Value (CSV) File Format. creativyst.com. [zarchiwizowane z tego adresu (2021-04-04)]. – Popularny opis formatu CSV (ang.)
- The CSV format specification. supercsv.sourceforge.net. [zarchiwizowane z tego adresu (2009-01-25)]. – Definicja formatu CSV zapisana w rozszerzonej notacji BNF (ang.)