CSV vs TSV: Który Format Separatora Powinieneś Wybrać?
Szybka odpowiedź
Używaj CSV do ogólnej wymiany danych, import/export z arkuszy i maksymalnej kompatybilności. Używaj TSV gdy dane zawierają przecinki ale nie taby, aby uniknąć quoting i escapowania. TSV jest powszechne w bioinformatyce i NLP; CSV to uniwersalny default.
Wstęp
CSV (Comma-Separated Values) i TSV= TSV (Tab-Separated Values) to dwa formaty plain-text dla danych tabelarycznych. Oba przechowują wiersze jako linie z polami oddzielonymi separatorem. CSV używa przecinków; TSV używa znaków tab. Wybór separatora wpływa na escapowanie, kompatybilność z arkuszami kalkulacyjnymi i obsługę pól tekstowych zawierających separator.
Krok po kroku
-
Porównaj ogranicznik i ucieczkę
CSV używa przecinków. Jeśli pole zawiera przecinek, należy go ująć w cudzysłów: „Smith, John”. Jeśli pole zawiera cudzysłowy, należy je zmienić: „Powiedział „„cześć”””. TSV używa zakładek. Tabulatory rzadko pojawiają się w danych tekstowych, więc pola TSV zwykle nie wymagają cudzysłowu ani zmiany znaczenia — prostsze analizowanie.
-
Porównaj kompatybilność
CSV jest powszechnie obsługiwany: Excel, Arkusze Google=Arkusze, każda baza danych, każdy język programowania. TSV jest również szeroko obsługiwany, ale mniej ustandaryzowany — niektóre narzędzia inaczej interpretują tabulatory. Excel automatycznie wykrywa oba, ale domyślnym formatem eksportu jest CSV.
-
Porównaj złożoność analizowania
Analiza CSV wymaga maszyny stanów do obsługi reguł cytowania (RFC 4180). Analiza TSV jest banalna: podziel każdą linię według znaku tabulacji. Dzięki temu analiza TSV jest szybsza i mniej podatna na błędy. Jednak CSV ma formalną specyfikację (RFC 4180); TSV nie ma formalnego standardu.
-
Porównaj przypadki użycia
CSV: import/eksport arkuszy kalkulacyjnych, dane APIs, potoki ETL, pliki konfiguracyjne, uniwersalna wymiana danych. TSV: bioinformatyka (BLAST, GFF), NLP (format CoNLL), dane ze schowka (skopiuj z Excela = TSV), pliki dziennika z ogranicznikami tabulacji.
-
Zdecyduj na podstawie swoich danych
Jeśli Twoje dane zawierają przecinki (imiona, adresy, zdania): TSV unika cytowania. Jeśli Twoje dane zawierają tabulatory (rzadko w tekście): CSV unika cytowania. Jeśli potrzebujesz maksymalnej kompatybilności: CSV. Jeśli chcesz prostszego analizowania i Twoje dane nie zawierają tabulatorów: TSV.
Przykłady
Te same dane w CSV i TSV
Wejście: CSV: imię i nazwisko, wiek, miasto\n"Smith, John",30","Nowy Jork, NY"\nTSV: imię\tage\tmiasto\nSmith, John\t30\tNowy Jork, NY
Wyjście: CSV wymaga cudzysłowów dla pól z przecinkami. TSV nie wymaga cytowania, ponieważ w danych nie pojawiają się tabulatory.
Typowe problemy
- CSV cytowanie przypadków brzegowych: pola zawierające przecinki, cudzysłowy lub znaki nowej linii wymagają reguł cytowania RFC 4180 — naiwne dzielenie przecinkami spowoduje uszkodzenie danych osadzonymi przecinkami.
- TSV nie ma formalnego standardu: w przeciwieństwie do CSV (RFC 4180), TSV nie ma oficjalnej specyfikacji, więc narzędzia mogą inaczej obsługiwać przypadki brzegowe — używaj TSV tylko w kontrolowanych potokach.
- Problemy z kodowaniem Excel: Excel może eksportować CSV z BOM lub ogranicznikami specyficznymi dla ustawień regionalnych (średnik w ustawieniach regionalnych UE) — określ kodowanie UTF-8 i sprawdź ogranicznik podczas importu.
- Niejednoznaczność nowej linii: CSV pola z osadzonymi znakami nowej linii są prawidłowe, ale przerywają analizę wiersz po wierszu — TSV rzadko napotyka ten problem, ponieważ tabulatory są rzadkością w danych tekstowych.
Porady
- Użyj CSV, aby uzyskać maksymalną kompatybilność — każdy arkusz kalkulacyjny, baza danych i język programowania obsługuje go natywnie.
- Użyj TSV, gdy dane zawierają przecinki, ale nie tabulatory (nazwiska, adresy, zdania), aby całkowicie uniknąć złożoności cytowania.
- Zawsze używaj odpowiedniego parsera CSV (nie string.split) do obsługi reguł cytowania RFC 4180 — naiwne dzielenie powoduje uszkodzenie pól z osadzonymi przecinkami lub cudzysłowami.
- Podczas kopiowania danych z Excela do edytora tekstu schowek korzysta z formatu TSV — wklej do pliku .tsv, aby poprawnie zachować pola z przecinkami.