Siêu dữ liệu của sep = séc bạn có thể thêm vào CSV là gì?


24

Trong khi cố gắng tìm hiểu làm thế nào để CSV được mở chính xác trong Excel trên PC Tây Ban Nha (thuộc về một khách hàng), tôi đã tìm thấy nhiều câu trả lời khuyên bạn nên sử dụng sep=,ở đầu tệp:

Trên khuôn mặt của nó, phương pháp này làm việc nhưng không ai trong số những câu trả lời đưa ra bất cứ thêm thông tin về nơi lựa chọn siêu dữ liệu này đến từ đâu. Tôi đã cố gắng tìm kiếm ý nghĩa của nó (và do đó tìm thấy tất cả các câu trả lời đó) nhưng không thể có thêm thông tin nào đặc biệt là cho rằng dấu câu rất khó tìm kiếm.

Mối quan tâm chính của tôi là liệu đây có phải là một tính năng dành riêng cho Excel hay không . Tôi nghi ngờ đó là nhưng không tìm thấy gì để xác nhận nó.

Một số câu hỏi liên quan là:

  • Những ký tự có thể được sử dụng trong cài đặt này?
  • Những cài đặt nào khác có sẵn (ví dụ: ký tự kết thúc dòng, ký tự trích dẫn, v.v.).
  • Có công cụ nào khác chính thức hỗ trợ tính năng này không?

Tôi hy vọng có một phần tài liệu ở đâu đó mà ai đó có thể chỉ cho tôi sẽ trả lời tất cả những câu hỏi này và hơn thế nữa; Tôi chỉ không thể tìm thấy nó.

Một số làm rõ:

Đây sep=không phải là một tham số cho trình phân tích cú pháp. Nó có nghĩa là được đặt bên trong CSV. Thí dụ:

sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"

4
Vâng, đây là excel cụ thể .
Raystafarian

2
Bạn có thể nhận được bất cứ điều gì về điều này? Tôi bối rối với cùng một câu hỏi và tôi vẫn chưa tìm thấy bất kỳ thông số kỹ thuật MS nào mô tả tính năng này. Nếu tính năng này không có giấy tờ của MS, làm thế nào mà nó thoát ra được ngay từ đầu?
chập chững

@toddlermenot Đáng buồn thay. Tất cả những gì tôi nhận được là mọi người đưa ra các xác nhận rằng đó là Excel cụ thể mà không có gì để sao lưu khẳng định đó, điều này thật đáng thất vọng.
Burhan Ali

Câu trả lời:


7

RFC 4180 thường được công nhận là tiêu chuẩn cho định dạng CSV và không đề cập đến bất kỳ tính năng nào như vậy.

Mô hình W3C cho Dữ liệu dạng bảng và Siêu dữ liệu trên Web đề cập đến nó như là một tính năng không nằm trong phạm vi của chúng:

Nhiều tệp "CSV" nhúng siêu dữ liệu, ví dụ như trong các dòng trước hàng tiêu đề của tài liệu CSV. Thông số kỹ thuật này không xác định bất kỳ định dạng nào để nhúng siêu dữ liệu trong các tệp CSV, ngoài tên của các cột trong hàng tiêu đề.

Vì vậy, trong khi tôi không tìm thấy bất kỳ bằng chứng trực tiếp nào cho thấy tính năng này là dành riêng cho Excel, thì rõ ràng đây vẫn là trường hợp vì dường như không có tài liệu tiêu chuẩn hóa nào bao gồm tính năng đó.


Nguồn hàng tốt. Một điều tôi nên nói là sep = | định nghĩa bộ tách để sử dụng trong Excel là ký tự ống ('|'). Nó không được sử dụng rộng rãi nhưng không dành riêng cho Excel. Đó là một chỉ thị riêng biệt. Các phiên bản quốc tế của Excel iirc có các ký tự khác nhau, ví dụ, ngôn ngữ châu Âu trên máy chạy excel sử dụng dấu chấm phẩy.
var FirstName

1
Tôi nhận thức được việc sử dụng (có thể điều đó không hoàn toàn rõ ràng từ câu trả lời của tôi). Tôi chỉ chỉ ra rằng dường như Excel đã giới thiệu tính năng đó, với nó dựa trên bất kỳ loại tiêu chuẩn (công khai) nào.
Stefan Kögl

0

Để đóng góp cho câu trả lời cho một trong những câu hỏi của bạn: "Có công cụ nào khác chính thức hỗ trợ tính năng này không?"

Điều này không được hỗ trợ bởi Số Apple (Tôi đã thử nghiệm bằng Số phiên bản 3.6.2).

Nó cũng không được hỗ trợ bởi csv2json ( https://www.npmjs.com/package/csv2json ) cũng như csvtojson ( https://www.npmjs.com/package/csvtojson ).


-1

Lệnh sep = được sử dụng ở tất cả các quốc gia nơi dấu phẩy được sử dụng làm dấu phân cách thập phân, như Ý. Vì Excel xuất CSV bằng dấu chấm phẩy thay vì dấu phẩy ở các quốc gia đó, nếu bạn muốn chắc chắn rằng tệp có thể được đọc ở Hoa Kỳ hoặc các quốc gia khác, bạn CẦN

sep =;

trên cùng của tập tin. Đây là Excel cụ thể và nó có thể bị các ứng dụng khác bỏ qua.


-2

Chỉ cần bất kỳ công cụ nào có thể nhập từ các tệp .csv đều nhận ra rằng dấu phẩy không phải là dấu phân tách duy nhất có thể, ví dụ, các tab đã phổ biến trong một thời gian dài. Tôi nghĩ rằng điều này đã quay trở lại thời của thẻ đục lỗ, rằng cần phải có một số ký tự được công nhận là kết thúc của trường dữ liệu - ngoại trừ các hệ thống sử dụng các trường có chiều rộng cố định hoặc các trường có tiền tố dài chỉ cần mọi hệ thống đều cần điều này kể từ sự ra đời của máy tính.

3 yếu tố cần thiết là trình phân tách trường, trình phân tách bản ghi và phần cuối của điểm đánh dấu dữ liệu, csv theo mặc định sử dụng dấu phẩy, dòng mới và phần cuối của tệp cho các mục tương ứng nhưng bạn có thể sử dụng bất kỳ đầu vào hợp lệ nào, tuy nhiên, bạn cần một cơ chế để thoát các điểm đánh dấu đặc biệt nếu chúng xuất hiện trong dữ liệu hợp lệ của bạn.

Một hệ thống lịch sử tôi đã bắt gặp dòng mới được sử dụng cho cuối trường, 2 dòng trống cho cuối bản ghi và *!*!* END *!*!*cho phần cuối của dữ liệu. Tôi thường bắt gặp tất cả ,\t|:được sử dụng như một dấu tách trường cùng với các ký tự điều khiển khác nhau.

Một điều cần cảnh giác là người Pháp và những người khác sử dụng dấu phẩy như một dấu thập phân - điều này có thể gây ra tất cả các loại trò chơi và trò chơi thú vị. Có một mức độ tiêu chuẩn hóa cho các tệp csv trong rfc4180 nhưng có những lúc bạn cần chỉnh sửa thủ công các tệp khi xuất từ ​​một chương trình và nhập vào một chương trình khác.

Để trả lời phần thứ hai của câu hỏi Python của bạn, ví dụ, bao gồm một trình đọc / ghi csv như một trong những thư viện tiêu chuẩn cung cấp các tùy chọn sau:

  • delimiter- Đây là dấu phân cách trường, (trừ khi thoát).
  • doublequote- Nếu đúng thì " trong trường sẽ được biểu diễn dưới dạng""
  • escapechar- loại bỏ bất kỳ ý nghĩa đặc biệt nào khỏi bất kỳ ký tự nào sau đây, ví dụ: nếu nó được đặt thành \thì trích dẫn có thể được biểu diễn dưới dạng\"
  • lineterminator- thường là một trong \n, \r, \r\nhoặc\n\r
  • quotechar- ký tự được sử dụng để trích dẫn chuỗi, thường "hoặc'
  • quoting - cờ là một trong:
    • ALL - Mỗi lĩnh vực được trích dẫn, tức là: "1","Free Beer","ASAP"
    • MINIMAL - Chỉ trích dẫn các trường có ký tự đặc biệt, nghĩa là: 1,"Beer, (Free)", Now, Please
    • QUOTE_NONNUMERIC - Trích dẫn bất cứ điều gì không phải là một số, tức là: 1,"Beer, (Free)", "Now", "Please"
    • NONE - Đừng trích dẫn lối thoát thay vào đó, tức là: 1,Beer\, (Free), Now, Please
  • skipinitialspace- bỏ qua bất kỳ không gian hàng đầu nào của mỗi trường để bạn có thể sử dụng , thay vì chỉ ,phân tách trường.

Nói chung, một công cụ có thể nhập các tệp csv linh hoạt hơn và được suy nghĩ kỹ càng nhiều hơn, (có thể với các tên và / hoặc cơ chế khác nhau), mà nó sẽ có.


2
Điều này không trả lời câu hỏi của tôi. Nó giải thích CSV là gì, mà tôi đã biết. Câu hỏi của tôi là về một phần cụ thể của cú pháp. Có bất kỳ nền tảng mà tôi có thể thêm vào câu hỏi của tôi để làm rõ mọi thứ?
Burhan Ali

1
Cảm ơn nhưng điều đó vẫn không giúp được gì. sep=không phải là một tham số cho trình phân tích cú pháp. Tôi đã thêm một số làm rõ cho câu hỏi của tôi.
Burhan Ali

1
@SteveBarnes Nhưng có công cụ nào, ví dụ thư viện Python mà bạn đề cập, cho phép các tùy chọn là một phần của nội dung của tệp không? Đó là, tôi nghĩ, điểm chính của câu hỏi.
Randy Orrison

1
"Bởi vì họ là một trong nhiều người kỳ lạ." Có phải mặc dù? Đó là một phần của những gì tôi đang cố gắng thực hiện. Tôi không muốn biết CSV là gì. Tôi không muốn biết cách phân tích CSV. Tôi muốn biết nó sep=là gì và đến từ đâu.
Burhan Ali

1
sep = là một phương pháp gợi ý cụ thể của Microsoft Excel không có trong bất kỳ đặc điểm kỹ thuật không phải của Microsoft nào mà tôi có thể tìm thấy. Nó đến từ một phần của Microsoft.
Steve Barnes
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.