CSV verisini JSON nesne dizisine dönüştürün. İlk satır anahtar olur. Tırnaklı alanları, değer içindeki virgülleri ve boş hücreleri işler.
Örnek CSV’yi dönüştürmek şu çıktıyı üretir:
[
{
"name": "Alice Chen",
"email": "alice@example.com",
"role": "admin",
"active": true
},
{
"name": "Bob Martinez",
"email": "bob@example.com",
"role": "editor",
"active": true
},
{
"name": "Carol Williams",
"email": "carol@example.com",
"role": "viewer",
"active": false
}
]
İlk satır anahtarları oluşturur. Sonraki her satır bir nesne olur. active sütunundaki true ve false değerleri, boolean literal stringleriyle tam eşleştikleri için JSON booleanlarına dönüştürülür.
RFC 4180 resmi CSV standardına en yakın belgedir. Temel kurallar:
\r\n) ile biter, ancak çoğu ayrıştırıcı LF (\n) de kabul eder"")Tırnaklı alanlar ve gömülü virgüller içeren uyumlu bir CSV:
id,description,tags
1,"Converts JSON, YAML, and CSV","data,tools"
2,"Supports ""quoted"" values","parsing"
CSV alanları format düzeyinde her zaman stringdir. Tipli JSON üreten bir dönüştürücü şu sırayla çıkarım yapar:
"42" -> 42 (geçerli integer)
"3.14" -> 3.14 (geçerli float)
"true" -> true (boolean literal)
"false" -> false (boolean literal)
"" -> null (boş alan)
"hello" -> "hello" (string olarak kalır)
Bu çoğu veri için işe yarar ancak şu durumlarda hatalı sonuç üretir:
07302 7302 olur)1e5 100000 olur)"true" veya "null" değerini depolayan alanlarÜretim veri boru hatları için dönüştürücünün tip çıkarımına güvenmeyin. Bilinen şemaya göre tip dönüşümünü uygulamanızda açıkça yapın.
Bir betik veya boru hattında CSV’den JSON’a dönüştürme yapmanız gerektiğinde:
pip install csvkit
csvjson data.csv > data.json
csvjson --indent 2 data.csv > data.json
import csv
import json
with open("data.csv") as f:
reader = csv.DictReader(f)
data = list(reader)
print(json.dumps(data, indent=2))
csv.DictReader ilk satırı otomatik olarak anahtar olarak kullanır. Tüm değerler string olarak kalır (tip çıkarımı yok).
jq @csv kullanarak diğer yöne (JSON’dan CSV’ye) gidebilir, ancak CSV’den JSON’a en temiz yol Python veya csvkit’dir.
Windows’ta Excel, UTF-8 BOM ile CSV dosyaları dışa aktarır (dosyanın başında EF BB BF bayt dizisi). Bu görünmez karakter ilk sütun başlığına eklenir. İlk anahtarınız first_name yerine \ufefffirst_name ise, ayrıştırmadan önce BOM’u kaldırın:
with open("data.csv", encoding="utf-8-sig") as f:
reader = csv.DictReader(f)
utf-8-sig kodeki BOM’u otomatik olarak kaldırır.
Bazı CSV dışa aktarıcıları, sondaki alanlar boşsa başlıktan daha az sütunlu satırlar üretir. RFC 4180 tutarlı sütun sayıları gerektirir, ancak gerçek dünya CSV’si karmaşıktır. Bir satır başlıktan daha az sütuna sahip olduğunda, eksik anahtarlar ayrıştırıcıya bağlı olarak ya null değer alır ya da tamamen atlanır.
Windows’tan CSV dosyaları CRLF (\r\n) kullanır. Unix/Mac dosyaları LF (\n) kullanır. Bazı ayrıştırıcılar \r karakterini her satırdaki son alanın değerinin bir parçası olarak işler. Son sütununuzda değerlerin sonunda satır başı karakteri varsa, kaynak dosyada Windows satır sonları vardır ve ayrıştırıcı bunu doğru işlemiyordur. Kontrol etmek için bir hex düzenleyicide açın veya file data.csv komutunu çalıştırın.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.