Một tệp CSV có thể có một nhận xét?


203

Có cách nào chính thức để cho phép tệp định dạng CSV cho phép nhận xét, trên dòng riêng HOẶC ở cuối dòng không?

Tôi đã thử kiểm tra wikipedia về điều này và cả RFC 4180 nhưng cả hai đều không đề cập đến bất cứ điều gì khiến tôi tin rằng đó không phải là một phần của định dạng tệp vì vậy thật không may cho tôi và sau đó tôi nên sử dụng tệp ReadMe.txt riêng biệt để giải thích tập tin.

Cuối cùng, tôi biết thật dễ dàng để tôi thêm nhận xét của riêng mình, nhưng tôi hy vọng rằng một cái gì đó như Excel có thể nhập ngay lập tức mà không cần người tiêu dùng phải tùy chỉnh quy trình nhập.

Vậy, suy nghĩ?


1
Bạn sẽ bình luận gì? Các giá trị trong mỗi dòng hoặc chính tập tin? Là tệp XML thay thế cho bạn?
Square Rig Master

3
Lời đề nghị đã bị bắn hạ đối với Python .
new123456

2
Có thể là một chuỗi phiên bản cho dữ liệu @SapesRigMaster. Giống như tôi đang cố gắng làm gì bây giờ?
Rob Wells

@SapesRigMaster - Hoặc tuyên bố bản quyền.
Richard Smith

Câu trả lời:


116

"Tiêu chuẩn" CSV (như vậy) không cho biết cách xử lý các bình luận, không, tùy thuộc vào ứng dụng để thiết lập một quy ước và gắn bó với nó.


23
RFC 4180 là tiêu chuẩn bây giờ.
vipw

34
RFC 4180 không phải là một tiêu chuẩn, rfc4180 nói: "Bản ghi nhớ này cung cấp thông tin cho cộng đồng Internet. Nó không chỉ định tiêu chuẩn Internet dưới bất kỳ hình thức nào. Phân phối bản ghi nhớ này là không giới hạn."
Paul Weibert

14
OK, chúng ta có thể nói là một tiêu chuẩn thực tế không?
Marco Sulla

1
Tất cả các RFC là các bản ghi nhớ không nhằm cung cấp bất kỳ tiêu chuẩn Internet AFAIK nào
usr-local-ΕΨΗΕΛΩΝ

5
Yah ... điều đó không đúng. Có các tài liệu theo dõi tiêu chuẩn và tài liệu theo dõi (thông tin) không chuẩn. Toàn bộ quy trình, bao gồm các mô tả, quy trình và quy tắc cho các tài liệu do IETF ban hành được xác định bởi RFC2026 với một số sửa đổi. Mỗi RFC sẽ chỉ định khi bắt đầu theo dõi nó.
Steve Hole

31

Trong dữ liệu kỹ thuật, người ta thường thấy #biểu tượng trong cột đầu tiên được sử dụng để báo hiệu nhận xét.

Tôi sử dụng thư viện phân tích cú pháp CSV của skermiller để đọc và xử lý các tệp đó. Thư viện đó cho phép bạn đặt ký tự nhận xét. Sau thao tác phân tích cú pháp, bạn nhận được một mảng chỉ chứa dữ liệu thực, không có nhận xét nào.


30

Không, CSV không chỉ định bất kỳ cách gắn thẻ nhận xét nào - chúng sẽ chỉ được tải bởi các chương trình như Excel dưới dạng các ô bổ sung có chứa văn bản.

Cách gần nhất mà bạn có thể quản lý (với CSV được nhập vào một ứng dụng cụ thể như Excel) là xác định một cách gắn thẻ nhận xét đặc biệt mà Excel sẽ bỏ qua. Đối với Excel, bạn có thể "ẩn" nhận xét (ở mức độ giới hạn) bằng cách nhúng nó vào công thức. Ví dụ: thử nhập tệp csv sau vào Excel:

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

Bạn vẫn kết thúc với một ô trong bảng tính hiển thị số 0, nhưng bình luận bị ẩn.

Ngoài ra, bạn có thể ẩn văn bản bằng cách chỉ cần đệm nó ra bằng khoảng trắng để nó không được hiển thị trong phần hiển thị của ô:

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

Lưu ý rằng bạn cần theo dõi văn bản nhận xét bằng dấu phẩy để Excel điền vào ô sau và do đó ẩn bất kỳ phần nào của văn bản không khớp trong ô.

Các bản hack khó chịu, sẽ chỉ hoạt động với Excel, nhưng chúng có thể đủ để làm cho đầu ra của bạn trông gọn gàng hơn một chút sau khi nhập.


6

Tôi nghĩ cách tốt nhất để thêm nhận xét vào tệp CSV sẽ là thêm trường "Nhận xét" hoặc ghi ngay vào dữ liệu.

Hầu hết các ứng dụng phân tích cú pháp CSV mà tôi đã sử dụng đều thực hiện cả ánh xạ trường và chọn bản ghi. Vì vậy, để nhận xét về các thuộc tính của một trường, hãy thêm một bản ghi chỉ cho các mô tả trường. Để nhận xét về một bản ghi, hãy thêm một trường vào cuối của nó (tốt, tất cả các bản ghi, thực sự) chỉ để bình luận.

Đây là hai lý do duy nhất tôi có thể nghĩ đến để bình luận một tệp CSV. Nhưng vấn đề duy nhất tôi có thể thấy trước là các chương trình từ chối chấp nhận tập tin nếu bất kỳ bản ghi nào không vượt qua một số quy tắc xác thực. Trong trường hợp đó, bạn sẽ gặp khó khăn khi viết bản ghi mô tả trường kiểu chuỗi cho bất kỳ trường số nào.

Tuy nhiên, tôi không phải là một chuyên gia, vì vậy hãy thoải mái chỉ ra bất kỳ sai lầm nào trong lý thuyết của tôi.


2
Aaand, tôi chỉ đọc rằng bạn không muốn tùy chỉnh quy trình nhập. Xin lỗi vì việc đó. Hy vọng rằng ai đó tìm thấy điều này hữu ích, sau đó.
Tyler Mumford

1
Bài đăng tốt. Một lý do khác tôi có thể nghĩ về lý do tại sao bạn có thể muốn bình luận là thêm một số dữ liệu meta về toàn bộ tệp. Thêm toàn bộ một cột hoặc hàng chỉ cho một ô có thông tin này, điều này cảm thấy hơi khó xử.
Ben Hershey

3

Tệp được phân tách bằng dấu phẩy thực sự chỉ là một tệp văn bản trong đó các dòng bao gồm các giá trị được phân tách bằng dấu phẩy.

Không có tiêu chuẩn xác định nội dung của tệp CSV, vì vậy không có cách xác định nào để chỉ ra nhận xét. Nó phụ thuộc vào chương trình sẽ nhập tệp CSV.

Tất nhiên, đây thường là Excel. Bạn nên tự hỏi làm thế nào để Excel xác định một nhận xét? Nói cách khác, điều gì sẽ khiến Excel bỏ qua một dòng (hoặc một phần của một dòng) trong tệp CSV? Tôi không biết bất cứ điều gì sẽ làm điều này.


2
There is no standard which defines the contents of a CSV file Sai.
Qix - MONICA ĐƯỢC PHÂN BIỆT

5
@Qix - từ phần 2 của tài liệu được tham chiếu: "Mặc dù có nhiều thông số kỹ thuật và cách triển khai khác nhau cho định dạng CSV (ví dụ: [4], [5], [6] và [7]), không có thông số kỹ thuật chính thức nào trong sự tồn tại "
Công nghệ ngoài hành tinh

3

Nếu bạn phân tích tệp bằng lệnh FOR trong tệp bó, dấu chấm phẩy hoạt động (;)

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!

ĐẦU RA:

2, parse this line, yes it should!

4, parse this line, yes it should!

1
!! Bạn có phải là Bare Bare Ken Bob thực sự?
Geoffrey Hale

2

Nếu bạn cần một cái gì đó như:

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

CSV của bạn có thể chứa các dòng sau:

"#My comment, something else"
1,2

Hãy chú ý đến 'trích dẫn' trong dòng đầu tiên.

Khi chuyển đổi văn bản của bạn thành các cột bằng trình hướng dẫn Excel, hãy nhớ kiểm tra 'Xử lý các dấu phân cách liên tiếp là một', đặt nó thành sử dụng 'dấu ngoặc kép làm dấu phân cách.

Do đó, Excel sẽ phân chia văn bản tại dấu phẩy, giữ dòng 'nhận xét' dưới dạng một giá trị cột duy nhất (và nó sẽ xóa dấu ngoặc kép).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.