Tiếng Việt

Văn bản & công cụ hàng ngày · Bộ công cụ văn bản

Cắt bớt, loại bỏ trùng lặp, sắp xếp: tại sao thứ tự của các bước dọn dẹp văn bản lại quan trọng

· Tại sao nó quan trọng

text-cleanup duplicate-lines sắp xếp

Ba danh sách thành viên lộn xộn trải qua các bước cắt, loại bỏ dòng trống, loại bỏ trùng lặp và sắp xếp
Hình minh họa vector ToolAcre gốc

Hai dòng chỉ khác nhau một dấu cách ở cuối sẽ không trùng lặp cho đến khi bạn cắt bớt chúng; bài đăng này giải thích lý do tại sao cắt bớt → xóa trống → loại bỏ trùng lặp → sắp xếp là thứ tự đúng và cách xác minh từng bước bằng số lượng.

Danh sách đã loại bỏ trùng lặp nhưng vẫn có các bản sao - cách một dấu cách vô hình ở cuối đánh bại một danh sách loại bỏ trùng lặp ngây thơ

Thư ký thành viên hợp nhất ba bản xuất đăng ký và vẫn thấy hai mục nhập cho cùng một địa chỉ sau khi chọn Xóa trùng lặp. Một dòng kết thúc ngay sau địa chỉ, trong khi dòng kia mang dấu cách được sao chép từ một ô trong bảng tính. Chúng trông giống hệt nhau trên màn hình, nhưng quá trình so sánh nhận được hai chuỗi khác nhau, vì vậy cả hai đều tồn tại.

Chạy các nút dọn dẹp tương tự theo thứ tự khác có thể ẩn thay vì giải quyết sự không khớp đó. Việc sắp xếp trước có thể đặt những cái gần trùng lặp lại với nhau để xem xét trực quan, tuy nhiên nó không làm cho chúng bằng nhau. Trình tự đáng tin cậy là chuẩn hóa các cạnh dòng, loại bỏ các dòng không có nội dung, loại bỏ các đoạn lặp lại chính xác và chỉ sắp xếp sau khi quyết định rằng thứ tự nguồn không có ý nghĩa.

Bước một, cắt bớt các dòng - loại bỏ khoảng trắng ở đầu và cuối để các mục giống hệt nhau trở nên giống hệt nhau

Bắt đầu với các đường Cắt. Việc triển khai sẽ phân tách văn bản ở các ngắt dòng CRLF, LF hoặc CR đơn độc, áp dụng việc cắt xén JavaScript cho mỗi dòng và nối lại các dòng với LF. Khoảng trắng ở đầu và cuối biến mất khỏi mỗi hàng, do đó ` member@example.test ` và `member@example.test` trở thành cùng một văn bản trước khi bắt đầu phát hiện sự trùng lặp.

Việc cắt xén có chủ ý thu hẹp hơn so với việc sửa chữa văn bản thông thường. Nó không thay đổi khoảng cách bên trong tên, sửa cách viết hoa hoặc quyết định rằng hai địa chỉ được viết khác nhau thuộc về một người. Hạn chế đó làm cho lần vượt qua đầu tiên này có thể được xem xét: chỉ có khoảng trắng ở cạnh dòng thay đổi, trong khi mọi ký tự hiển thị trong mục nhập vẫn có sẵn để thư ký kiểm tra.

Bước hai, xóa các dòng trống - tại sao các dòng trống phải đi trước khi sắp xếp chứ không phải sau

Tiếp theo chọn Xóa dòng trống. Một dòng được coi là trống khi việc cắt nó sẽ tạo ra một chuỗi trống, do đó các hàng chứa dấu cách hoặc tab sẽ biến mất cùng với các hàng trống rõ ràng. Thực hiện việc này trước khi sắp xếp sẽ ngăn không cho các mục trống bị di chuyển đến một đầu của danh sách và bị nhầm lẫn với kết quả đầu ra không giải thích được từ thao tác sắp xếp.

Lần vượt qua thứ hai này cũng làm rõ các lần đếm sau. Dấu phân cách trống giữa ba danh sách đã nhập rất hữu ích khi tập hợp nguồn nhưng nó không phải là bản ghi thành viên. Sau khi các danh sách được kết hợp và ranh giới của chúng không còn quan trọng nữa, việc loại bỏ các dấu phân cách đó sẽ khiến mỗi dòng còn lại tương ứng với một mục nhập trong danh sách ứng cử viên có thể so sánh được.

Bước ba, loại bỏ các bản sao - lần xuất hiện đầu tiên vẫn giữ nguyên, các bản sao sau sẽ biến mất và thứ tự của những gì còn lại không thay đổi

Bây giờ hãy chạy Xóa các bản sao. Với nút mặc định, việc so sánh phân biệt chữ hoa chữ thường và không thực hiện việc cắt xén khác. Hàm này đi từ trên xuống dưới, lưu trữ từng dòng mà nó đã thấy, giữ lại lần xuất hiện đầu tiên và bỏ qua mọi kết quả khớp chính xác sau đó. Do đó, thứ tự tương đối của tất cả các dòng được giữ lại vẫn giữ nguyên sau thao tác này.

Việc giữ bản sao đầu tiên rất quan trọng khi thứ tự nguồn có mức độ ưu tiên yếu hơn, chẳng hạn như đặt bản xuất đăng ký chính trước danh sách bổ sung. Nó không hợp nhất các chi tiết từ các hàng cạnh tranh và `Alex@example.test` vẫn khác biệt với `alex@example.test`. Xem xét những khác biệt đó một cách thủ công thay vì cho rằng mọi thay đổi trong trường hợp đều là việc chuẩn hóa danh tính vô hại.

Bước bốn, sắp xếp - chỉ khi thứ tự không quan trọng, để làm cho kết quả dễ quét

Chỉ sắp xếp sau khi các bản sao được giải quyết và chỉ khi cách trình bày theo thứ tự bảng chữ cái có giá trị hơn thứ tự nhập. Sắp xếp từ A-Z sao chép các dòng và so sánh chúng với ngôn ngữ trình duyệt, bật độ nhạy không phân biệt chữ hoa chữ thường và so sánh số. Do đó, các mục chứa số có thể tuân theo thứ tự số tự nhiên thay vì theo trình tự từng ký tự đơn giản.

Đề cương mô tả việc sắp xếp chỉ như một công cụ hỗ trợ quét dễ dàng, nhưng việc triển khai có hành vi so sánh cụ thể đáng được ghi lại. Kết quả có thể phụ thuộc vào ngôn ngữ trình duyệt và các biến thể trường hợp trông giống nhau có thể giữ lại vị trí tương đối phụ thuộc vào việc triển khai. Nếu thứ tự danh sách ghi lại thời gian đến, mức độ ưu tiên hoặc trạng thái biểu quyết, hãy bỏ qua việc sắp xếp và giữ nguyên trình tự bị trùng lặp.

Bước bốn, sắp xếp bằng so sánh nhận biết ngôn ngữ, phân biệt chữ hoa chữ thường và số, nhưng chỉ khi thứ tự nguồn là dùng một lần

Sử dụng số lượng Dòng trực tiếp như một cuộc kiểm tra đang diễn ra, không phải là bằng chứng cho thấy mỗi người còn lại là duy nhất. Ghi lại số đếm sau lần dán đầu tiên, sau khi xóa dòng trống và sau khi xóa bản sao. Việc cắt xén thường khiến số lượng không thay đổi; khoảng trống giảm nó bằng số lượng hàng bị loại bỏ; sự trùng lặp làm giảm nó bằng số lượng bản sao chính xác sau này.

Dấu ngắt dòng ở cuối tạo ra một dòng trống cuối cùng vì việc tách dòng sẽ giữ nguyên văn bản sau dấu ngắt đó. Điều này có thể làm cho số lượng bắt đầu trông cao hơn dự kiến ​​cho đến khi Xóa dòng trống chạy. So sánh các hàng trong danh sách thực tế cũng như số lượng, vì hai mục nhập khác nhau vẫn có thể đề cập đến một người và một địa chỉ dùng chung giống hệt nhau có thể đại diện cho hai người.

Kiểm tra số dòng trong khi ghi nhớ rằng dấu ngắt dòng ở cuối sẽ tạo ra dòng cuối cùng trống

Giả sử nguồn một chứa `Mina@example.test`, nguồn hai chứa cùng một địa chỉ theo sau là dấu cách và nguồn ba lặp lại địa chỉ rõ ràng bên dưới hai hàng chỉ có khoảng trắng. Dán cả ba khối lại với nhau và ghi lại số dòng. Trước tiên, hãy cắt bớt để các bản sao có khoảng cách khớp với nhau, sau đó xóa các dòng trống để dấu phân cách không còn được tính là ứng cử viên trong danh sách.

Chọn Xóa trùng lặp tiếp theo; hàng Mina sạch đầu tiên vẫn giữ nguyên và hai bản sau biến mất. Đọc số lượng đã giảm và quét các mục gần đó trước khi chọn Sắp xếp A-Z. Mọi chuyển đổi sẽ đẩy văn bản soạn thảo trước đó vào ngăn xếp lịch sử, do đó, Hoàn tác có thể khôi phục từng bước một khi số lượng giảm đột ngột hoặc thứ tự nguồn tỏ ra quan trọng.

Bài học rút ra - các nút của Bộ công cụ văn bản là các phép biến đổi đơn lẻ được áp dụng theo thứ tự bạn chọn và thứ tự được đề xuất sẽ được ghi lại trên trang

Bộ công cụ văn bản hiển thị các nút độc lập thay vì lệnh dọn dẹp đi kèm. Thiết kế đó quy định trách nhiệm của người dùng và cũng làm cho mỗi thay đổi có thể được quan sát. Mặc dù thanh công cụ hiển thị Xóa trùng lặp trước Xóa dòng trống và Cắt bớt dòng, quy trình làm việc an toàn hơn cho xuất khẩu hỗn hợp là Cắt bớt dòng, Xóa dòng trống, Xóa trùng lặp, sau đó sắp xếp tùy chọn.

Hãy coi thứ tự đó như một quy trình làm sạch dữ liệu nhỏ: bình thường hóa những gì so sánh nhìn thấy, xóa các bản ghi không có nội dung, thu gọn các lần lặp lại chính xác và chỉ sắp xếp lại tập hợp cuối cùng. Giữ số lượng và Hoàn tác có sẵn ở mọi ranh giới. Kết quả không phải là cơ sở dữ liệu thành viên đã được xác minh mà là một danh sách sạch hơn, có thể kiểm tra được, sẵn sàng để kiểm tra danh tính mà các chức năng văn bản không thể thực hiện.