Genel bakış:
İşiniz CSV girişini key=value
formatta almak ve daha düzenli (aşağıya bakınız) bir şekilde sıralamaktır.
Giriş:
Her zaman stdin ile . Kayıtlar her zaman aşağıdaki biçimde olacaktır key=value
:
foo=bar,baz=quux
abc=123,foo=fubar
baz=qwe,abc=rty,zxc=uiop,foo=asdf
- Önceden olası anahtarların bir listesi olmayacak, bunları giriş metninde bulmalısınız.
- Girişiniz, işletim sisteminiz için uygun olan
EOF
ne olursa olsun, tarafından belirtilirEOF
.
Çıktı:
Çıktınızın ilk satırı tüm tuşların alfabetik sırayla bir listesi olacaktır (tuşların tümü sayı olsa bile). Bundan sonra, her kaydı listelenen tuşlar olmadan aynı CSV formatında uygun sayı başlığını yazdırın. Dolayısıyla, yukarıdaki örnek için doğru çıktı:
abc,baz,foo,zxc
,quux,bar,
123,,fubar,
rty,qwe,asdf,uiop
SSS:
- Hatalı biçimlendirilmiş girdi konusunda endişelenmem gerekiyor mu?
- Hayır. Giriş düzgün biçimlendirilmemişse, programınız istediği her şeyi yapabilir (istisna, yoksay, vb.)
foo,bar,baz
- Hayır. Giriş düzgün biçimlendirilmemişse, programınız istediği her şeyi yapabilir (istisna, yoksay, vb.)
- Kaçan özel karakterleri nasıl ele alırım?
- Formatın parçası olmayan ekte
,
veya=
verilerde bulunmayacağını varsayabilirsinizkey=value
."
bu yarışmada özel bir anlamı yoktur (geleneksel CSV'de de olsa).hiçbir şekilde özel değildir.
- Satırlar aşağıdaki normal ifadeyle eşleşmelidir:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$
- Bu nedenle, hem anahtarlar hem de değerler eşleşir
[^=,]+
- Bu nedenle, hem anahtarlar hem de değerler eşleşir
- Formatın parçası olmayan ekte
CRLF
Vs. ne olacakLF
?- Platformunuz için uygun olan sınırlayıcıyı seçebilirsiniz. Çoğu dil bunu özel sınırlayıcı kod olmadan ele alır.
- Son birkaç sütun yoksa sondaki virgülleri yazdırmam gerekir mi?
- Evet. Örneğe bakın.
- CSV ayrıştırıcılarına veya diğer benzer harici araçlara izin veriliyor mu?
- Hayır. Verileri kendiniz ayrıştırmalısınız.