Her csv kaydının farklı sayıda alana sahip olabileceği bir metin dosyası düşünün. Görev, dosyanın her kaydında kaç alan bulunduğunu göstermek için kod yazmaktır. Dosyada başlık satırı olmadığını ve istediğiniz gibi bir dosyadan veya standart girdiden okuyabileceğini varsayabilirsiniz.
Dosyanın her satırının tanımı için aşağıda açıklayacağım csv kuralları için rfc4180'in bir sürümünü varsayabilirsiniz . Spesifikasyonun ilgili bölümünün hafifçe düzenlenmiş bir versiyonu:
CSV Formatının Tanımı
Her kayıt, satır sonu (CRLF) ile ayrılmış ayrı bir satırda bulunur. Örneğin:
aaa,bbb,ccc CRLF zzz,yyy,xxx CRLFDosyadaki son kaydın bir bitiş sonu kesmesi olabilir veya olmayabilir. Örneğin:
aaa,bbb,ccc CRLF zzz,yyy,xxx
(Kural 3. bu sorun için geçerli değildir)
Her kayıtta, virgülle ayrılmış bir veya daha fazla alan olabilir. Boşluklar bir alanın parçası olarak kabul edilir ve göz ardı edilmemelidir.
Her alan çift tırnak içine alınabilir veya alınmayabilir. Alanlar çift tırnak içine alınmazsa, alanların içinde çift tırnak görünmeyebilir. Örneğin:
"aaa","bbb","ccc" CRLF zzz,yyy,xxxSatır sonu (CRLF), çift tırnak ve virgül içeren alanlar çift tırnak içine alınmalıdır. Örneğin:
"aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxxAlanları kapatmak için çift tırnak işareti kullanılıyorsa, alanın içinde görünen çift tırnaktan önce başka bir çift tırnak işareti kullanılmalıdır. Örneğin:
"aaa","b""bb","ccc"
Misal
Giriş:
,"Hello, World!"
"aaa","b""bb","ccc"
zzz,yyy,
"aaa","b
bb","ccc","fish",""
Çıktı vermelidir:
2, 3, 3, 5
Çıkış değerlerini en uygun bulduğunuz şekilde verebilirsiniz.
Kütüphaneler
İstediğiniz herhangi bir kütüphaneyi kullanabilirsiniz.
Şimdiye kadar harika yanıtlar ama özellikle harika olacak bir komut satırı / bash cevabı eksik.