CSV vs TSV: Hangi Ayraç Formatını Seçmelisiniz?
Hızlı Yanıt
Genel amaçlı veri değişimi, elektronik tablo import/export ve maksimum uyumluluk için CSV kullanın. Veriniz virgül içeriyorsa ama tab yoksa, quoting ve escaping karmaşıklığını önlemek için TSV kullanın. TSV bioinformatics ve NLP'de yaygın; CSV evrensel default.
giriiş
CSV (Comma-Separated Values) ve TSV (Tab-Separated Values), tabular veri için iki plain-text formattır. İkisi de satırları ayırıcıyla ayrılmış alanlarla satır olarak saklar. CSV virgül kullanır; TSV tab karakteri kullanır. Ayırıcı seçimi escaping, elektronik tablo uyumluluğu ve ayırıcı içeren metin alanlarının işlenmesini etkiler.
Adım adım
-
Sınırlayıcıyı ve kaçmayı karşılaştırın
CSV virgül kullanır. Bir alan virgül içeriyorsa tırnak içine alınmalıdır: "Smith, John". Bir alan tırnak işaretleri içeriyorsa, bunlardan kaçınılmalıdır: ""Merhaba"" dedi". TSV sekmeleri kullanır. Sekmeler metin verilerinde nadiren görünür, bu nedenle TSV alanlarının genellikle alıntı yapmasına veya kaçış yapmasına gerek yoktur; ayrıştırma daha kolaydır.
-
Uyumluluğu karşılaştırın
CSV evrensel olarak desteklenir: Excel, Google Sheets=Tablolar, her veritabanı, her programlama dili. TSV de geniş çapta desteklenmektedir ancak daha az standarttır; bazı araçlar sekmeleri farklı şekilde yorumlar. Excel her ikisini de otomatik olarak algılar, ancak CSV varsayılan dışa aktarma biçimidir.
-
Ayrıştırma karmaşıklığını karşılaştırın
CSV ayrıştırma, alıntılama kurallarını (RFC 4180) yönetecek bir durum makinesi gerektirir. TSV ayrıştırma önemsizdir: her satırı sekme karakterine göre bölün. Bu, TSV'nin ayrıştırılmasını daha hızlı ve hataya daha az eğilimli hale getirir. Ancak CSV resmi bir spesifikasyona sahiptir (RFC 4180); TSV'nin resmi bir standardı yoktur.
-
Kullanım örneklerini karşılaştırın
CSV: elektronik tablo içe/dışa aktarma, veri APIs, ETL işlem hatları, yapılandırma dosyaları, evrensel veri alışverişi. TSV: biyoinformatik (BLAST, GFF), NLP (CoNLL formatı), pano verileri (Excel'den kopya = TSV), sekme sınırlayıcıları olan günlük dosyaları.
-
Verilerinize göre karar verin
Verileriniz virgül içeriyorsa (isimler, adresler, cümleler): TSV alıntı yapmaktan kaçınır. Verileriniz sekmeler içeriyorsa (metinde nadirdir): CSV alıntı yapmaktan kaçınır. Maksimum uyumluluğa ihtiyacınız varsa: CSV. Daha basit ayrıştırma istiyorsanız ve verileriniz sekmesizse: TSV.
Örnekler
CSV ve TSV'de aynı veriler
Giriş: CSV: ad,yaş,şehir\n"Smith, John",30,"New York, NY"\nTSV: ad\tage\tşehir\nSmith, John\t30\tNew York, NY
Çıkış: CSV virgüllü alanlar için tırnak işareti gerektirir. TSV'nin alıntı yapmasına gerek yok çünkü verilerde sekmeler görünmüyor.
Yaygın Sorunlar
- CSV alıntı uç durumları: virgül, tırnak işareti veya yeni satır içeren alanlar RFC 4180 alıntılama kuralları gerektirir; virgülle basit bir bölme, gömülü virgül içeren verileri bozar.
- TSV'nin resmi bir standardı yoktur: CSV'den (RFC 4180) farklı olarak, TSV'nin resmi bir spesifikasyonu yoktur, dolayısıyla araçlar uç durumları farklı şekilde ele alabilir; TSV'yi yalnızca kontrollü işlem hatları içinde kullanın.
- Excel kodlama sorunları: Excel, CSV dosyasını BOM veya yerel ayara özgü sınırlayıcılarla (AB yerel ayarlarında noktalı virgül) dışa aktarabilir; UTF-8 kodlamasını belirtin ve içe aktarma sırasında sınırlayıcıyı doğrulayın.
- Yeni satır belirsizliği: Gömülü yeni satırlara sahip CSV alanları geçerlidir ancak satır satır ayrıştırmayı bozar — TSV bu sorunu nadiren yaşar çünkü sekmeler metin verilerinde yaygın değildir.
İpuçları
- Maksimum uyumluluk için CSV kullanın; her e-tablo, veritabanı ve programlama dili onu yerel olarak destekler.
- Verileriniz virgül içeriyor ancak sekmeler (isimler, adresler, cümleler) içermiyorsa, karmaşık alıntılardan tamamen kaçınmak için TSV kullanın.
- RFC 4180 alıntılama kurallarını işlemek için her zaman uygun bir CSV ayrıştırıcı (string.split değil) kullanın; saf bölme, gömülü virgül veya tırnak işaretleri içeren alanları bozar.
- Verileri Excel'den bir metin düzenleyiciye kopyalarken pano TSV biçimini kullanır; virgüllü alanları doğru şekilde korumak için bir .tsv dosyasına yapıştırın.