2009-12-25 7 views
152

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

Tôi đã thử kiểm tra wikipedia về điều này và cũng RFC 4180 nhưng cả hai đều không đề cập đến bất kỳ điều gì khiến tôi tin rằng nó không phải là một phần của định dạng tệp sao cho nó 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 các tập tin.

Cuối cùng, tôi biết thật dễ dàng để 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ể chỉ cần nhập ngay lập tức mà không cần người tiêu dùng phải tùy chỉnh quá trình nhập.

Vì vậy, suy nghĩ?

+1

bạn sẽ bình luận gì trên? Các giá trị trong mỗi dòng hoặc chính tệp đó? Tệp XML có thay thế cho bạn không? –

+3

Đề xuất đã được gỡ xuống cho [Python] (http://bugs.python.org/issue1225769). – new123456

+2

Có thể là chuỗi phiên bản cho dữ liệu @SquareRigMaster. Cũng giống như tôi đang cố gắng làm bây giờ? –

Trả lời

78

CSV "chuẩn" (chẳng hạn như nó) không quy định cách xử lý nhận xét, không, tùy thuộc vào ứng dụng để thiết lập quy ước và gắn kết với nó.

+19

RFC 4180 là tiêu chuẩn hiện nay. – vipw

+13

RFC 4180 không phải là tiêu chuẩn, [rfc4180] (http://tools.ietf.org/html/rfc4180) cho biết: "Thư báo này cung cấp thông tin cho cộng đồng Internet. không chỉ định tiêu chuẩn Internet dưới bất kỳ hình thức nào. Phân phối này ghi nhớ là không giới hạn. " –

+7

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

2

Tệp được phân tách bằng dấu phẩy thực sự chỉ là 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 cho biết 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 mình làm thế nào để Excel xác định một bình luận? Nói cách khác, điều gì sẽ làm cho 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.

+1

'Không có tiêu chuẩn xác định nội dung của tệp CSV' [Sai.] (Http://tools.ietf.org/html/rfc4180) – Qix

+3

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

23

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 ô bổ sung chứa văn bản.

Gần nhất 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 cách đặc biệt gắn thẻ các nhận xé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 một công thức. Ví dụ: hãy 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 bằng ô trong bảng tính hiển thị số 0, nhưng nhận xét bị ẩn.

Ngoài ra, bạn có thể ẩn các văn bản bằng cách đơn giản đệm nó ra với không gian để nó không được hiển thị trong phần nhìn thấy được của tế bào:

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

Lưu ý rằng bạn cần phải làm theo các văn bản bình luận với một 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 vừa trong ô.

Hacks 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 hơi 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 là thêm trường "Nhận xét" hoặc ghi lại 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 triển khai cả ánh xạ trường và chọn bản ghi. Vì vậy, để bình luận về các thuộc tính của một trường, thêm một bản ghi chỉ cho các mô tả trường. Để bình luận về một bản ghi, thêm một trường ở cuối của nó (tốt, tất cả các bản ghi, thực sự) chỉ cho các bình luận.

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

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

+1

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

1

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 những dòng sau:

"#My comment, something else" 
1,2 

Chú ý chặt chẽ tại các 'dấu ngoặc kép' trong dòng đầu tiên.

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

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

19

Trong dữ liệu kỹ thuật, 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 số ostermiller CSV parsing library để đọc và xử lý các tệp như vậy. Thư viện đó cho phép bạn đặt ký tự nhận xét. Sau khi hoạt động 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ó ý kiến.

2

Nếu bạn đang phân tích các tập tin với một lệnh FOR trong một tập tin thực thi các công trình một dấu chấm phẩy (;)

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! 

OUTPUT:

2, parse this line, yes it should! 

4, parse this line, yes it should! 
+0

!! Bạn có thực sự là Barefoot Ken Bob không? –