Dữ liệu & bảng tính · CSV Trình dọn dẹp
RFC 4180 Giải thích: Điều gần gũi nhất CSV Phải có Tiêu chuẩn Chính thức
· Lý lịch
csv rfc-4180 data-formats
CSV đã tồn tại hàng thập kỷ trước khi có người viết nó ra. Bài đăng này trình bày về RFC 4180, nội dung thực sự nói về dấu phân cách, trích dẫn, kết thúc dòng và tiêu đề cũng như lý do các tệp trong thế giới thực vẫn bỏ qua nó.
Hai tệp CSV 'hợp lệ' mà không một trình phân tích cú pháp nào đọc chính xác — tại sao định dạng này đã phát triển trong nhiều thập kỷ mà không có tiêu chuẩn
Cả hai tệp đều có thể mang phần mở rộng .csv trong khi một tệp sử dụng dấu chấm phẩy, một tab khác và mỗi tệp áp dụng dấu ngoặc kép khác nhau. Trình phân tích cú pháp phải biết một phương ngữ trước khi dấu câu trở thành cấu trúc. ToolAcre bắt đầu với bốn ứng cử viên và cho điểm các hình dạng mẫu được phân tích cú pháp thay vì tin tưởng vào tiện ích mở rộng.
Tính linh hoạt đó giải thích tại sao “hợp lệ CSV” thường là mô tả không đầy đủ. Trình dọn dẹp có thể chấp nhận những sai lệch phổ biến và sau đó tuần tự hóa một kết quả nhất quán. Hành vi của nó được xác định bằng cấu hình và thử nghiệm, đưa ra một hợp đồng hữu ích hơn là giả định mọi nhà sản xuất đều tuân theo một bản ghi nhớ một cách hoàn hảo.
RFC 4180 là gì — một bản ghi nhớ cung cấp thông tin từ 2005 ghi lại thông lệ chung, không phải là tiêu chuẩn ràng buộc
Kho lưu trữ liên tục đặt tên RFC 4180 làm quy ước đầu ra nhưng nó không phải là nguồn cho các xác nhận lịch sử về ngày tháng hoặc trạng thái pháp lý của bản ghi nhớ. Do đó, bài viết này tập trung vào các quy tắc được thể hiện trong quá trình triển khai: phần cuối bản ghi, trích dẫn, độ rộng tiêu đề và xử lý dấu phân cách.
Khi lịch sử các tiêu chuẩn bên ngoài quan trọng, hãy trích dẫn riêng ấn phẩm chính. Để sử dụng ToolAcre, bằng chứng liên quan là cục bộ: mã mặc định là CRLF, trích dẫn các ký tự cấu trúc, nhân đôi dấu ngoặc kép bên trong và báo cáo một hàng có chiều rộng khác với tiêu đề.
Bằng chứng kho lưu trữ sử dụng RFC 4180 làm quy ước mục tiêu; lịch sử xuất bản nằm ngoài bộ nguồn
Mục tiêu được định cấu hình mô tả đầu ra được phân cách bằng dấu phẩy, kết thúc dòng CRLF, khái niệm tiêu đề tùy chọn và các hàng hình chữ nhật. Trên tuyến đường vận chuyển, hàng đầu tiên không phải là tùy chọn trong thực tế: nó luôn được sử dụng làm tiêu đề. Tệp không có tiêu đề sẽ mất bản ghi đầu tiên cho vai trò đó.
Đầu vào rách rưới không gây ra sự từ chối. Các hàng ngắn được đệm bằng các ô trống; các hàng dài giữ các phần bổ sung và cả hai đều nhận được cảnh báo đánh số hàng. Trình tuần tự hóa ghi mọi hàng được giữ lại, do đó, "đầu ra sạch" không có nghĩa là chương trình đã đoán được cách khắc phục sự bất đồng về cấu trúc.
Trích dẫn theo bản ghi nhớ - khi nào các trường phải được trích dẫn và cách nhân đôi dấu ngoặc kép theo nghĩa đen
Một trường phải được trích dẫn khi nó chứa dấu phân cách đã chọn, dấu ngoặc kép hoặc ký tự kết thúc bản ghi. ToolAcre còn trích dẫn thêm các khoảng trắng ở đầu hoặc cuối để trình phân tích cú pháp khác không âm thầm cắt bớt chúng. Bên trong trường được trích dẫn, mỗi dấu ngoặc kép theo nghĩa đen sẽ trở thành hai dấu ngoặc kép.
Công tắc Trích dẫn mỗi trường yêu cầu một kiểu thống nhất; nếu không thì đầu ra được trích dẫn ở mức tối thiểu. Các trích dẫn nguồn dư thừa có thể biến mất trong khi các giá trị được phân tích cú pháp vẫn giữ nguyên. Việc chuẩn hóa này được mong đợi và đó là lý do tại sao các cuộc kiểm tra so sánh bảng đã khôi phục cũng như kết quả đầu ra chính xác cho các mẫu đã chọn.
Loại phương tiện văn bản/csv — tham số tiêu đề và bộ ký tự tùy chọn cũng như lý do chúng hiếm khi di chuyển cùng với tệp trên đĩa
Một tệp trên đĩa hiếm khi xuất hiện với các tham số loại phương tiện được đính kèm. ToolAcre không đọc thông số `header` hoặc `charset` từ tệp đã chọn. Nó dựa vào hợp đồng tuyến đường của nó: văn bản UTF-8, tiêu đề hàng đầu tiên và tính năng phát hiện dấu phân cách được hỗ trợ hoặc lựa chọn thủ công.
Công tắc xuất BOM tùy chọn ghi U+FEFF trước tiêu đề đầu tiên. Điều đó có thể giúp bảng tính nhận ra UTF-8, nhưng cấu hình cảnh báo nó có thể phá vỡ tập lệnh hoặc quá trình nhập cơ sở dữ liệu nghiêm ngặt do điểm đánh dấu nối với tên đầu tiên khi không bị loại bỏ. Hãy bỏ nó đi trừ khi người tiêu dùng yêu cầu.
Nơi thế giới phân kỳ - dấu chấm phẩy, kết thúc dòng LF, hàng rời rạc và bảng mã không nhãn và tại sao bản ghi nhớ không chấp nhận điều đó
Dữ liệu đầu vào thực tế có thể sử dụng dấu chấm phẩy, tab hoặc ống dẫn, LF hoặc CR đơn độc, các hàng không đều nhau và UTF-8 BOM ở đầu. Trình phân tích cú pháp có chủ ý chấp nhận tất cả các kết thúc dòng và dấu phân cách đó. Nó không âm thầm “chịu đựng” những hàng rách rưới; nó giữ dữ liệu và đính kèm một cảnh báo.
Báo giá không được tiết lộ là một điều kiện khác được chấp nhận nhưng vẫn được báo cáo. Mọi thứ sau dấu ngoặc kép mở đầu sẽ trở thành một trường vì không tồn tại ranh giới kết thúc rõ ràng. Hãy sửa nguồn đó trước khi tin tưởng xuất. Phân tích cú pháp cho phép là một chiến lược bảo toàn chứ không phải chứng nhận rằng đầu vào tuân thủ.
ToolAcre chấp nhận một số sai lệch trong thế giới thực trong khi báo cáo các hàng rời rạc thay vì từ chối chúng
Không có quy tắc nào ở đây cung cấp cho các ô số, kiểu boolean hoặc null. Trình phân tích cú pháp trả về các chuỗi và trình chuyển đổi JSON giữ chúng dưới dạng chuỗi. Các quy ước ngữ nghĩa phải được người gửi và người nhận đồng ý, bao gồm cả việc có thiếu văn bản trống hay không và liệu chuỗi chữ số có phải là mã định danh hay không.
An toàn khi tiêm công thức là chính sách xuất khẩu được xếp lớp phía trên cú pháp CSV. Khi được bật, các ký tự đầu có rủi ro sẽ nhận được dấu nháy đơn ngoại trừ các dạng số thông thường. Điều đó cố tình thay đổi các giá trị để đảm bảo an toàn cho bảng tính; nó không phải là một phần của việc thoát trích dẫn hoặc một hệ thống kiểu chung.
Nhắm đến đầu ra kiểu RFC ngay cả khi đầu vào bỏ qua nó — cách ToolAcre CSV Cleaner sửa chữa các tệp theo hướng phân tách và trích dẫn nhất quán
Hướng đến kết quả đầu ra có thể dự đoán được ngay cả khi phương ngữ nguồn thay đổi. Sau khi phân tích cú pháp và giải quyết các cảnh báo, ToolAcre phát ra CRLF bản ghi và thoát dấu ngoặc kép tiêu chuẩn. Nếu dấu phân cách được phát hiện vẫn là dấu chấm phẩy hoặc tab thì quá trình tải xuống sẽ giữ dấu phân cách đó thay vì luôn bắt buộc phải có dấu phẩy.
Chọn dấu phẩy theo cách thủ công khi hợp đồng nhận yêu cầu đầu ra được phân tách bằng dấu phẩy và kiểm tra điều khiển vì nó hiển thị dấu phân cách thực sự được sử dụng. Tính nhất quán đến từ lựa chọn rõ ràng cộng với hình dạng hàng được xem xét, không chỉ từ tiện ích mở rộng CSV.