Wyobraź sobie plik tekstowy, w którym każdy rekord csv może mieć inną liczbę pól. Zadanie polega na napisaniu kodu, który wyświetli liczbę pól w każdym rekordzie pliku. Możesz założyć, że w pliku nie ma linii nagłówka i możesz czytać z pliku lub ze standardowego wejścia, zgodnie z wyborem.
Możesz założyć wersję rfc4180 dla reguł csv, które wyjaśnię poniżej dla definicji każdej linii pliku. Oto lekko edytowana wersja odpowiedniej części specyfikacji:
Definicja formatu CSV
Każdy rekord znajduje się w osobnej linii, oddzielonej linią podziału (CRLF). Na przykład:
aaa,bbb,ccc CRLF zzz,yyy,xxx CRLFOstatni rekord w pliku może, ale nie musi, mieć kres końca linii. Na przykład:
aaa,bbb,ccc CRLF zzz,yyy,xxx
(Zasada 3. nie dotyczy tego wyzwania)
W każdym rekordzie może znajdować się jedno lub więcej pól oddzielonych przecinkami. Spacje są uważane za część pola i nie należy ich ignorować.
Każde pole może, ale nie musi, być ujęte w podwójne cudzysłowy. Jeśli pola nie są ujęte w podwójne cudzysłowy, wówczas podwójne pola mogą nie pojawiać się w polach. Na przykład:
"aaa","bbb","ccc" CRLF zzz,yyy,xxxPola zawierające podział wiersza (CRLF), podwójne cudzysłowy i przecinki powinny być ujęte w cudzysłowy. Na przykład:
"aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxxJeśli do zamykania pól stosowane są cudzysłowy, wówczas cytat pojawiający się w polu musi być poprzedzony innym podwójnym cudzysłowem. Na przykład:
"aaa","b""bb","ccc"
Przykład
Wejście:
,"Hello, World!"
"aaa","b""bb","ccc"
zzz,yyy,
"aaa","b
bb","ccc","fish",""
Powinien dać wynik:
2, 3, 3, 5
Możesz podać wartości wyjściowe w dowolny dogodny dla siebie sposób.
Biblioteki
Możesz użyć dowolnej biblioteki, którą lubisz.
Do tej pory niesamowite odpowiedzi, ale brakuje nam linii poleceń / odpowiedzi bash, co byłoby szczególnie fajne.