CSV (Comma-Separated Values) biçimlendirme, ham tablo metnini normalleştirme sürecidir; bu sayede sınırlandırıcılar, tırnaklama, boşluklar ve satır sonları tutarlı bir kural setini izler. 2005 yılında yayımlanan RFC 4180, en yaygın benimsenen CSV standardını tanımlar: virgüllerle ayrılmış alanlar, CRLF ile sonlandırılan kayıtlar ve virgül, çift tırnak ya da satır sonu içeren alanlar çift tırnakla sarılır. Bir CSV biçimlendirici, dağınık veya tutarsız CSV verilerini alır ve bu kurallara uyacak şekilde yeniden yazar.
Gerçek dünyadaki CSV dosyaları nadiren temiz hâlde gelir. Excel, Google Sheets ve veritabanı döküm araçlarından yapılan elektronik tablo dışa aktarımları farklı tırnaklama stratejileri uygular, boşlukları farklı biçimde ele alır ve virgül yerine noktalı virgül veya sekme kullanabilir. Bu dosyaları katı RFC 4180 girdisi bekleyen bir ayrıştırıcıya verdiğinizde sonuç çoğu zaman bozuk satırlar, kaymış sütunlar veya sessiz veri kaybı olur. İşlemeden önce biçimlendirmek bu sorunları erken yakalar.
Bir CSV biçimlendirici, CSV dönüştürücüden farklıdır. Biçimlendirme veriyi CSV olarak tutar; tırnaklama normalleştirilir, gereksiz boşluklar kırpılır, sütunlar hizalanır ve isteğe bağlı olarak sınırlandırıcı değiştirilir. Dönüştürme ise biçimi tamamen değiştirir ve JSON, HTML, SQL veya Markdown çıktısı üretir.
Bu CSV Biçimlendiriciyi Neden Kullanmalısınız?
Bu araç, CSV'nizi tamamen tarayıcıda ayrıştırır ve yeniden serileştirir. Verileriniz makinenizden hiçbir zaman çıkmaz.
⚡
Anında Biçimlendirme
CSV yapıştırın ve temizlenmiş çıktıyı hemen görün. Biçimlendirici, siz yazarken tarayıcıda ayrıştırır ve yeniden serileştirir.
🔒
Gizlilik Öncelikli İşleme
Tüm ayrıştırma ve biçimlendirme tarayıcı sekmenizde gerçekleşir. Ağ üzerinden hiçbir veri iletilmez. Makinenizden çıkmaması gereken özel veri kümeleri, kimlik bilgileri ve kişisel veriler için güvenlidir.
🔧
Yapılandırılabilir Sınırlandırıcılar
Virgül, sekme, noktalı virgül ve boru (pipe) sınırlandırıcıları arasında geçiş yapın. Araç girdi sınırlandırıcısını otomatik algılar ve çıktı için farklı bir sınırlandırıcı seçmenize olanak tanır; bu da biçimler arası normalleştirmeyi kolaylaştırır.
📋
Tek Tıkla Kopyala ve İndir
Biçimlendirilmiş CSV'yi panonuza kopyalayın veya dosya olarak indirin. Ek düzenleme olmadan veritabanlarına, elektronik tablolara veya veri boru hatlarına aktarmaya hazırdır.
CSV Biçimlendirici Kullanım Senaryoları
Frontend Geliştirme
React veya Vue bileşenlerinde sahte veri olarak kullanılan CSV sabit dosyalarını temizleyin. Tutarlı tırnaklama, geliştirme derlemelerinde ayrıştırma hatalarını önler.
Backend Veri Alımı
ETL boru hattınıza aktarmadan önce üçüncü taraf API'lerden gelen CSV dışa aktarımlarını normalleştirin. Boşlukları kırpmak ve sınırlandırıcıları standartlaştırmak sütun kayması hatalarını önler.
DevOps ve CI/CD
Sürüm kontrolüne alınan CSV yapılandırma dosyalarını veya başlangıç verilerini biçimlendirin. Tutarlı biçimlendirme fark gürültüsünü azaltır ve kod incelemelerini hızlandırır.
QA ve Test
Bilinen tırnaklama ve sınırlandırıcı kalıplarıyla CSV test sabitleri hazırlayın. Yeniden üretilebilir girdi dosyaları, ayrıştırıcı çıktısına karşı onaylamalar yazmayı kolaylaştırır.
Veri Mühendisliği
Eski veritabanlarından alınan CSV dökümlerini modern veri ambarlarına yüklemeden önce ön işleme tabi tutun. Tırnaklama sorunlarını ve sınırlandırıcı uyumsuzluklarını düzeltmek saatler süren hata ayıklama işlemini ortadan kaldırır.
Öğrenme ve Eğitim
Farklı girdiler yapıştırarak ve biçimlendiricinin bunları nasıl normalleştirdiğini gözlemleyerek RFC 4180 tırnaklama kurallarını deneyin. CSV uç durumlarını anlamanın pratik bir yolu.
CSV Tırnaklama ve Kaçış Kuralları (RFC 4180)
RFC 4180, alanların ne zaman ve nasıl tırnak içine alınması gerektiğine dair belirli kurallar tanımlar. Aşağıdaki altı senaryo, tırnaklama davranışının önemli olduğu durumları kapsar.
Senaryo
Örnek
Kural
Field contains delimiter
name,"Smith, Jr."
Wrap in double quotes
Field contains newline
"line1\nline2"
Wrap in double quotes
Field contains double quote
"She said ""hello"""
Double the quote character
Field is empty
,,
Two consecutive delimiters
Field has leading spaces
" value"
Quotes preserve whitespace
Field is numeric
42
No quotes required unless forced
CSV Sınırlandırıcı Karşılaştırması
Sınırlandırıcı seçimi uyumluluğu, okunabilirliği ve tırnaklı alanlara ne sıklıkla ihtiyaç duyacağınızı etkiler.
Virgül (,)
RFC 4180 varsayılanı. Her CSV ayrıştırıcı ve elektronik tablo tarafından desteklenir. Adres ve metin verilerinde yaygın olarak karşılaşıldığı için alan değerleri virgül içerdiğinde tırnaklama gerektirir.
Sekme (\t)
TSV (Tab-Separated Values) dosyalarında kullanılır. Sekme karakterleri alan verilerinde nadiren görüldüğünden tırnaklama hemen hemen hiç gerekmez. Biyoenformatik ve veritabanı dışa aktarımlarında yaygındır.
Noktalı virgül (;)
Virgülün ondalık ayırıcı olarak kullanıldığı Avrupa yerel ayarlarındaki CSV dışa aktarımlarında (Almanya, Fransa, Brezilya) standarttır. Sistem yerel ayarı virgüllü ondalık kullandığında Excel de noktalı virgül kullanır.
Boru (|)
Doğal metinde nadir görülür; bu nedenle alan değerlerinde virgül ve noktalı virgül bulunan dağınık veriler için iyi bir seçenektir. Ana sistem (mainframe) ve eski sistem dışa aktarımlarında yaygındır.
Kod Örnekleri
Bu örnekler, dağınık CSV'nin farklı dillerde nasıl ayrıştırılacağını ve tutarlı biçimlendirmeyle nasıl yeniden serileştirileceğini gösterir. Her kod parçası boşluk kırpma, sınırlandırıcı normalleştirme ve tırnaklama işlemlerini kapsar.
JavaScript (Node.js)
import { parse, unparse } from 'papaparse'
const messy = `name, age ,city
Alice , 30, Berlin
Bob,25 , " Tokyo "`
// Parse with trimming, then re-serialize with consistent formatting
const parsed = parse(messy, {
header: true,
skipEmptyLines: true,
transformHeader: h => h.trim(),
transform: v => v.trim(),
})
const clean = unparse(parsed.data, { quotes: true })
console.log(clean)
// → "name","age","city"
// → "Alice","30","Berlin"
// → "Bob","25","Tokyo"
Python
import csv
import io
messy = """name, age ,city
Alice , 30, Berlin
Bob,25 , " Tokyo " """
reader = csv.DictReader(io.StringIO(messy), skipinitialspace=True)
output = io.StringIO()
writer = csv.DictWriter(
output,
fieldnames=[f.strip() for f in reader.fieldnames],
quoting=csv.QUOTE_ALL,
)
writer.writeheader()
for row in reader:
writer.writerow({k.strip(): v.strip() for k, v in row.items()})
print(output.getvalue())
# → "name","age","city"
# → "Alice","30","Berlin"
# → "Bob","25","Tokyo"
Go
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
r := csv.NewReader(strings.NewReader(input))
records, _ := r.ReadAll()
var buf strings.Builder
w := csv.NewWriter(&buf)
w.UseCRLF = true // RFC 4180 line endings
for _, record := range records {
_ = w.Write(record)
}
w.Flush()
fmt.Print(buf.String())
// → name,age,city\r\n
// → Alice,30,Berlin\r\n
// → Bob,25,Tokyo\r\n
}
CLI (csvformat from csvkit)
# Re-format a CSV file with csvkit (Python-based)
csvformat -D ";" input.csv > output.csv
# Convert tabs to commas
csvformat -t input.tsv > output.csv
# Force-quote all fields
csvformat -U 1 input.csv > quoted.csv
# Using Miller (mlr) to normalize
mlr --icsv --ocsv --quote-all cat input.csv > clean.csv
Sıkça Sorulan Sorular
Bir CSV biçimlendirici ne işe yarar?
Bir CSV biçimlendirici, ham CSV metnini ayrıştırır, alanlar etrafındaki tırnaklama normalleştirir, gereksiz boşlukları kırpar ve veriyi tutarlı bir sınırlandırıcı ile satır sonu stiliyle yeniden serileştirir. Çıktı, RFC 4180'e veya seçtiğiniz biçimlendirme kurallarına uyan temiz bir CSV dosyasıdır.
CSV biçimlendirme ile CSV doğrulama arasındaki fark nedir?
Doğrulama, bir CSV dosyasının bir kural setine uyup uymadığını kontrol eder ve hataları raporlar. Biçimlendirme ise daha ileri gider: dosyayı yeniden yazarak bu sorunları düzeltir. Bir doğrulayıcı, 5. satırda tırnak içine alınmamış bir virgül olduğunu söyler. Bir biçimlendirici ise alanın etrafına tırnak ekleyerek bunu düzeltir.
CSV dosyalarını içe aktarmadan önce neden biçimlendirmem gerekiyor?
Veritabanı içe aktarma araçları, ETL boru hatları ve elektronik tablo yazılımlarının her birinin biraz farklı CSV ayrıştırma kuralları vardır. İçinde virgül bulunan tırnak içine alınmamış bir alan, katı ayrıştırıcılarda iki sütuna bölünür. CSV'nizi içe aktarmadan önce RFC 4180'i izleyecek şekilde biçimlendirmek bu sütun kayması hatalarını ve sessiz veri bozulmalarını önler.
Bu aracı kullandığımda verilerim sunucuya gönderiliyor mu?
Hayır. Tüm ayrıştırma ve biçimlendirme tarayıcınızda JavaScript kullanılarak gerçekleşir. CSV verileriniz makinenizde kalır ve ağ üzerinden hiçbir zaman iletilmez. Bunu, aracı kullanırken tarayıcınızın Ağ sekmesini açarak doğrulayabilirsiniz.
Biçimlendirme sırasında sınırlandırıcıyı değiştirebilir miyim?
Evet. Araç girdi sınırlandırıcısını (virgül, sekme, noktalı virgül veya boru) otomatik algılar ve çıktı için farklı bir sınırlandırıcı seçmenize olanak tanır. Bu, bölgesel CSV biçimleri arasında dönüştürme yaparken veya TSV'den standart CSV'ye geçerken kullanışlıdır.
Araç, gömülü satır sonu içeren tırnaklı alanları nasıl işler?
RFC 4180'e göre satır sonu içeren alanların çift tırnak içine alınması zorunludur. Biçimlendirici bu gömülü satır sonlarını korur ve etrafındaki tırnakların mevcut olduğunu güvence altına alır. Girdide tırnak içine alınmamış bir satır sonu bulunan bir alan varsa biçimlendirici, yeniden serileştirme sırasında bunu tırnakla sarar.
Bu araç maksimum ne kadar büyük bir dosyayı işleyebilir?
Araç tarayıcınızda çalıştığından pratik sınır, cihazınızın kullanılabilir belleğine bağlıdır. Modern makinelerde 10-20 MB'a kadar olan dosyalar genellikle sorunsuz işlenir. Bundan daha büyük dosyalar için csvkit veya Miller gibi komut satırı aracı daha iyi bir seçenektir.