Czy plik CSV może zawierać komentarz?

203

Czy istnieje jakiś oficjalny sposób, aby plik sformatowany w formacie CSV zezwalał na komentarze, albo w osobnym wierszu, albo na końcu wiersza?

Próbowałem sprawdzić wikipedię na ten temat, a także RFC 4180, ale oba nie wspominają niczego, co prowadzi mnie do przekonania, że ​​nie jest to część formatu pliku, więc mam pecha i powinienem użyć osobnego pliku ReadMe.txt, aby wyjaśnić plik.

Wreszcie, wiem, że dodawanie własnych komentarzy jest dla mnie łatwe, ale miałem nadzieję, że coś takiego jak Excel może po prostu zaimportować go bez potrzeby dostosowywania procesu importowania przez konsumenta.

Więc myśli?

Pure.Krome
źródło
1
Co byś skomentował? Wartości w każdym wierszu czy w samym pliku? Czy plik XML jest dla Ciebie alternatywą?
Square Rig Master,
3
Preposal został zestrzelony dla Pythona .
new123456
2
Może ciąg wersji dla danych @SquareRigMaster. Tak jak próbuję teraz?
Rob Wells,
@SquareRigMaster - Lub oświadczenie o prawach autorskich.
Richard Smith

Odpowiedzi:

116

„Standard” CSV (taki jak jest) nie określa, jak należy traktować komentarze, nie, to od aplikacji zależy ustanowienie konwencji i trzymanie się jej.

skaffman
źródło
23
RFC 4180 jest teraz standardem.
vipw
34
RFC 4180 nie jest standardem, rfc4180 mówi: „Ta notatka zawiera informacje dla społeczności internetowej. Nie określa żadnego rodzaju standardu internetowego. Dystrybucja tej notatki jest nieograniczona”.
Paul Weibert,
14
OK, czy możemy powiedzieć, że jest de facto standardem?
Marco Sulla
1
Wszystkie RFC są notatkami, które nie mają na celu dostarczenia żadnego standardu internetowego AFAIK
usr-local-ΕΨΗΕΛΩΝ
5
Tak ... to nieprawda. Istnieją standardowe dokumenty śledzenia i niestandardowe dokumenty (informacyjne). Cały proces, w tym opisy, procesy i zasady dotyczące dokumentów wydanych przez IETF, jest zdefiniowany w RFC2026 z pewnymi poprawkami. Każdy RFC określa na początku, na którym torze się znajduje.
Steve Hole
31

W danych inżynierskich często widać #symbol w pierwszej kolumnie używany do sygnalizowania komentarza.

Korzystam z biblioteki parsowania CSV ostermiller do odczytu i przetwarzania takich plików. Ta biblioteka pozwala ustawić znak komentarza. Po operacji parsowania otrzymujesz tablicę zawierającą tylko rzeczywiste dane, bez komentarzy.

Pedro_Uno
źródło
30

Nie, CSV nie określa żadnego sposobu oznaczania komentarzy - będą one ładowane przez programy takie jak Excel jako dodatkowe komórki zawierające tekst.

Najbliższym, którym możesz zarządzać (przy CSV importowanym do określonej aplikacji, takiej jak Excel), jest zdefiniowanie specjalnego sposobu oznaczania komentarzy, które Excel będzie ignorował. W programie Excel można „ukryć” komentarz (w ograniczonym stopniu), osadzając go w formule. Na przykład spróbuj zaimportować następujący plik csv do programu Excel:

=N("This is a comment and will appear as a simple zero value in excel")
John, Doe, 24

Nadal kończy się komórka w arkuszu kalkulacyjnym, która wyświetla liczbę 0, ale komentarz jest ukryty.

Alternatywnie możesz ukryć tekst, po prostu wypełniając go spacjami, aby nie był wyświetlany w widocznej części komórki:

                              This is a sort-of hidden comment!,
John, Doe, 24

Pamiętaj, że musisz podążać za tekstem komentarza przecinkiem, aby program Excel wypełnił następną komórkę, a tym samym ukrył dowolną część tekstu, która nie mieści się w komórce.

Paskudne włamania, które będą działać tylko z programem Excel, ale mogą wystarczyć, aby po zaimportowaniu wyglądać nieco ładniej.

Jason Williams
źródło
6

Myślę, że najlepszym sposobem dodawania komentarzy do pliku CSV byłoby dodanie pola „Komentarze” lub zapisanie bezpośrednio w danych.

Większość aplikacji parsujących CSV, z których korzystałem, implementuje zarówno mapowanie pól, jak i wybieranie rekordów. Aby więc skomentować właściwości pola, dodaj rekord tylko dla opisów pól. Aby skomentować rekord, dodaj pole na jego końcu (cóż, wszystkie rekordy, naprawdę) tylko dla komentarzy.

To jedyne dwa powody, dla których mogę komentować plik CSV. Ale jedynym problemem, jaki mogę przewidzieć, byłyby programy, które w ogóle nie przyjmują pliku, jeśli jakikolwiek pojedynczy rekord nie spełnia niektórych reguł sprawdzania poprawności. W takim przypadku wystąpiłby problem z zapisaniem rekordu opisu pola typu ciąg dla dowolnych pól numerycznych.

Nie jestem jednak ekspertem, więc śmiało mogę wskazać błędy w mojej teorii.

Tyler Mumford
źródło
2
Aaand, właśnie przeczytałem, że nie chcesz dostosowywać procesu importowania. Przepraszam za to. Mam nadzieję, że ktoś uzna to za przydatne.
Tyler Mumford
1
Dobry post Innym powodem, dla którego mogę wymyślić, dlaczego możesz chcieć komentarzy, jest dodanie niektórych metadanych dotyczących pliku jako całości. Dodanie całej kolumny lub wiersza tylko do jednej komórki z tymi informacjami jest nieco niezręczne.
Ben Hershey
3

Plik oddzielony przecinkami jest tak naprawdę plikiem tekstowym, w którym linie składają się z wartości oddzielonych przecinkami.

Nie ma standardu, który określa zawartość pliku CSV, więc nie ma zdefiniowanego sposobu oznaczania komentarza. Zależy to od programu, który będzie importował plik CSV.

Oczywiście jest to zwykle Excel. Powinieneś zadać sobie pytanie, jak Excel definiuje komentarz? Innymi słowy, co sprawi, że Excel zignoruje linię (lub jej część) w pliku CSV? Nie jestem świadomy niczego, co by to zrobiło.

pavium
źródło
2
There is no standard which defines the contents of a CSV file Fałszywe.
Qix - MONICA MISTREATEDED
5
@Qix - z sekcji 2 dokumentu referencyjnego: „Chociaż istnieją różne specyfikacje i implementacje formatu CSV (np. [4], [5], [6] i [7]), nie ma formalnej specyfikacji w istnienie ”
Alien Technology,
3

Podczas analizowania pliku za pomocą polecenia FOR w pliku wsadowym działa średnik (;)

REM test.bat contents

for /F "tokens=1-3 delims=," %%a in (test.csv) do @Echo %%a, %%b, %%c

;test.csv contents (this line is a comment)

;1,ignore this line,no it shouldn't

2,parse this line,yes it should!

;3,ignore this line,no it shouldn't

4,parse this line,yes it should!

WYNIK:

2, parse this line, yes it should!

4, parse this line, yes it should!
Ken Bob Saxton
źródło
1
!! Czy jesteś prawdziwym boso Kenem Bobem?
Geoffrey Hale
2

Jeśli potrzebujesz czegoś takiego:

  │ A                              │ B
──┼────────────────────────────────┼───
1 │ #My comment, something else    │
2 │ 1                              │ 2

Twój plik CSV może zawierać następujące wiersze:

"#My comment, something else"
1,2

Zwróć szczególną uwagę na „cytaty” w pierwszym wierszu.

Konwertując tekst na kolumny za pomocą kreatora Excel, pamiętaj o zaznaczeniu opcji „Traktuj kolejne separatory jako jeden”, ustawiając użycie „cudzysłowów” jako separatora.

W ten sposób program Excel podzieli tekst przecinkami, zachowując wiersz „komentarz” jako wartość jednej kolumny (i usunie cudzysłowy).

Rogerio Granato
źródło