Dữ liệu & bảng tính · CSV Trình dọn dẹp
Cách hoạt động của tính năng phát hiện dấu phân cách CSV: Dấu phẩy, dấu chấm phẩy, tab và dấu gạch đứng
· Cách thức hoạt động
csv data-cleaning file-formats
Tệp CSV không bao giờ cho biết ký tự nào phân tách các trường của nó, vì vậy phần mềm phải đoán. Bài đăng này giải thích cách hoạt động của tính năng đánh hơi dấu phân cách, tại sao nó không thành công trên các tệp khó và cách làm cho dấu phân cách rõ ràng.
Tệp mở dưới dạng một cột dài — tại sao dấu phân cách không được lưu trữ ở bất kỳ đâu trong CSV
Nhà phân tích dữ liệu mở bản xuất .csv và thấy một trường dài trên mỗi dòng. Tiện ích mở rộng không cho người đọc biết dấu phân cách nào đã được sử dụng và tệp thường không chứa khai báo dấu phân cách. Một ứng dụng giả sử dấu phẩy sẽ đọc tiêu đề được phân tách bằng dấu chấm phẩy chẳng hạn như tên;thành phố;ghi chú dưới dạng một cột. Trước khi thay đổi giá trị, hãy hỏi ký tự nào thực sự phân chia các trường và liệu trình nhập có cách ghi đè dự đoán của nó hay không.
Bốn ứng cử viên được hỗ trợ: dấu phẩy, dấu chấm phẩy, tab và đường ống
ToolAcre coi dấu phẩy, dấu chấm phẩy, tab và dấu gạch đứng là các ứng cử viên. Dấu chấm phẩy rất phổ biến khi dấu phẩy đã được sử dụng làm dấu tách thập phân, các tab tránh xung đột dấu câu trong các bản xuất đơn giản và các đường ống đôi khi phân tách các kết xuất nhật ký hoặc cơ sở dữ liệu. Dấu cách không nằm trong số các lựa chọn tự động của công cụ: tên và ô văn bản tự do thường chứa dấu cách. Đừng thêm một ứng cử viên chỉ vì nó xuất hiện thường xuyên trong văn bản mẫu; dấu phân cách phải chia các hàng thành các trường nhất quán.
Cách hoạt động của việc đánh hơi - đếm các ký tự ứng viên trên mỗi dòng và ưu tiên ký tự cung cấp số lượng trường nhất quán trên các hàng
Quá trình triển khai sẽ loại bỏ dấu thứ tự byte UTF-8 ở đầu và phân tích mẫu gồm tối đa 10 hàng với mỗi ứng cử viên. Nó ghi lại độ rộng của các hàng đó và từ chối bất kỳ ứng cử viên nào không bao giờ mang lại ít nhất hai cột. Một ứng cử viên đạt điểm cao hơn khi nó tạo ra nhiều cột nhất quán trên các hàng; chiều rộng không nhất quán sẽ bị phạt hai lần trong điểm số. Điều quan trọng là quá trình phân tích cú pháp sẽ quan sát các trường được trích dẫn, do đó dấu phẩy bên trong địa chỉ được trích dẫn không được tính là ranh giới trường. Điều này khác với cách đếm ký tự đơn giản và là lý do tại sao cột địa chỉ lộn xộn không cần phát hiện lỗi.
Trường hợp việc đánh hơi không thành công - các cột văn bản tự do chứa đầy dấu phẩy, tệp một cột và các trường được trích dẫn ẩn dấu phân cách thực sự
Không có phỏng đoán là không thể sai lầm. Một tệp rất ngắn có ít bằng chứng, một cột thực sự CSV không có ứng cử viên nào được chia thành hai và trích dẫn không đúng định dạng có thể khiến một số phân tích cú pháp ứng cử viên trông lộn xộn. Cột văn bản tự do chứa đầy dấu phân cách có thể cạnh tranh với dấu phân cách thực khi trích dẫn bị hỏng. Các dấu phân cách hỗn hợp giữa các hàng không phải là một phương ngữ CSV rõ ràng. Công cụ này báo cáo các cảnh báo phân tích cú pháp và hiển thị lựa chọn dấu phân cách thủ công; người dùng biết quy ước xuất ngược dòng có thể ghi đè lựa chọn được suy luận thay vì coi heuristic là một đặc tả.
Ví dụ đã hoạt động - một bản xuất được phân tách bằng dấu chấm phẩy với các dấu phẩy bên trong các địa chỉ, cho thấy lý do tại sao một số đếm ngây thơ lại chọn sai ký tự
Hãy thử một mẫu nhỏ với tiêu đề name;city;note và một hàng Ada;Paris;"Cuộc họp ở 10, gần nhà ga". Việc đếm dấu phẩy thô có thể thiên về dấu phẩy một cách sai lầm vì ghi chú có chứa dấu câu, đặc biệt là trên một số hàng như vậy. Trình phân tích cú pháp dấu chấm phẩy trả về ba trường trên cả hai hàng; trình phân tích cú pháp dấu phẩy không cung cấp cấu trúc hình chữ nhật giống nhau. Xác nhận bản xem trước hiển thị tên, thành phố và ghi chú dưới dạng các cột riêng biệt trước khi cắt bớt, loại bỏ trùng lặp hoặc xuất. Nếu một hàng nguồn có trích dẫn không được tiết lộ, hãy kiểm tra hàng đó thay vì âm thầm loại bỏ nó để cải thiện điểm số.
Chọn dấu phân cách đầu ra - khớp dấu phân cách với chương trình và ngôn ngữ sẽ đọc tệp tiếp theo
Dấu tách đầu vào và dấu tách đầu ra là các quyết định khác nhau. Bạn có thể nhập tệp dấu chấm phẩy Châu Âu nhưng xuất văn bản được phân tách bằng dấu phẩy kiểu RFC cho chương trình yêu cầu dấu phẩy. Người viết trích dẫn chính xác các trường chứa dấu phân cách đầu ra, dấu ngoặc kép được nhúng hoặc dấu ngắt dòng. Quyết định xem người nhận của bạn có cần UTF-8 BOM trước khi tải xuống hay không; một số ứng dụng bảng tính sử dụng một bảng tính để nhận dạng mã hóa trong khi nhiều trình phân tích cú pháp muốn tệp không có mã hóa đó. Kiểm tra tiêu đề đã tải xuống trong chương trình đích, không chỉ phần xem trước của trình duyệt.
Điều này không bao gồm những gì - các tệp kết hợp các dấu phân cách giữa các hàng và các bản xuất có chiều rộng cố định hoàn toàn không sử dụng dấu phân cách
Tính năng phát hiện không thể sửa chữa tệp thay đổi dấu phân cách giữa chừng và cũng không thể suy ra các cột trong bản xuất có chiều rộng cố định trong đó không có dấu phân cách. Nó không biết liệu dấu phẩy được trích dẫn có phải là một phần của địa chỉ đường phố hay là một lỗi nhập dữ liệu hay không: nó tuân theo cú pháp chứ không phải ý nghĩa. Trình dọn dẹp CSV sẽ hiển thị các hàng rời rạc và giữ nguyên giá trị của chúng thay vì đoán cách xóa dữ liệu của khách hàng. Sử dụng bản xem trước và cảnh báo của nó để chẩn đoán sự cố hệ thống nguồn trước khi thực hiện các bước làm sạch không thể đảo ngược.
Đặt dấu phân cách rõ ràng thay vì hy vọng — cách sửa chữa dấu phân cách của ToolAcre CSV Cleaner tạo ra một tệp có một dấu phân cách nhất quán
Dự đoán dấu phân cách là phân tích dựa trên bằng chứng của một vài hàng, không phải là lời hứa được viết bên trong tệp CSV. CSV Cleaner triển khai nó cục bộ trong trình duyệt của bạn, cho phép bạn chọn một dấu phân cách khác và ghi một phương ngữ đầu ra nhất quán. Nếu trình hướng dẫn nhập dự đoán khác vào tuần tới, hãy ghi lại quy ước đầu ra bên cạnh tệp để người đọc tiếp theo không phải khám phá lại nó.