Trăn tự nhiên

natsort không thực sự hiểu số phiên bản. Tình cờ là các lược đồ tạo phiên bản phổ biến nhất được thiết kế để hoạt động với các kỹ thuật sắp xếp tự nhiên tiêu chuẩn; . LỚN, LỚN. DIỄN VIÊN PHỤ. VÁ, NĂM. THÁNG. NGÀY. Nếu dữ liệu của bạn tuân theo sơ đồ như thế này, thì dữ liệu đó sẽ hoạt động vượt trội với natsorted (kể từ phiên bản natsort >= 4. 0. 0)

>>> a = ['version-1.9', 'version-2.0', 'version-1.11', 'version-1.10'] >>> natsorted(a) ['version-1.9', 'version-1.10', 'version-1.11', 'version-2.0']

Nếu bạn cần các phiên bản sử dụng sơ đồ phức tạp hơn, vui lòng xem

Sắp xếp đường dẫn giống như Trình duyệt tệp của tôi (e. g. Windows Explorer trên Windows)

Trước phiên bản natsort 7. 1. 0, đó là một yêu cầu phổ biến để có thể sắp xếp các đường dẫn như Windows Explorer. kể từ ngày 7. 1. 0, chức năng os_sorted đã được thêm vào để cung cấp cho người dùng khả năng sắp xếp theo thứ tự mà trình duyệt tệp của họ có thể sắp xếp (e. g Windows Explorer trên Windows, Finder trên MacOS, Dolphin/Nautilus/Thunar/v.v. trên Linux)

import os from natsort import os_sorted print(os_sorted(os.listdir())) # The directory sorted like your file browser might show

Đầu ra sẽ khác nhau tùy thuộc vào hệ điều hành bạn đang sử dụng

Đối với người dùng không có trên Windows (e. g. MacOS/Linux), bạn cũng nên cài đặt PyICU, điều này sẽ giúp natsort đưa ra kết quả phù hợp với hầu hết các trình duyệt tệp. Nếu điều này không được cài đặt, nó sẽ quay trở lại mô-đun ngôn ngữ tích hợp sẵn của Python và sẽ cho kết quả tốt đối với hầu hết đầu vào, nhưng sẽ cho kết quả kém đối với các ký tự đặc biệt

Sắp xếp theo số thực (i. e. Phao đã ký)

Điều này hữu ích trong phân tích dữ liệu khoa học (và là hành vi mặc định của natsorted cho phiên bản natsort < 4. 0. 0). Sử dụng chức năng sắp xếp lại

>>> from natsort import realsorted, ns >>> # Note that when interpreting as signed floats, the below numbers are >>> # +5.10, -3.00, +5.30, +2.00 >>> a = ['position5.10.data', 'position-3.data', 'position5.3.data', 'position2.data'] >>> natsorted(a) ['position2.data', 'position5.3.data', 'position5.10.data', 'position-3.data'] >>> natsorted(a, alg=ns.REAL) ['position-3.data', 'position2.data', 'position5.10.data', 'position5.3.data'] >>> realsorted(a) # shortcut for natsorted with alg=ns.REAL ['position-3.data', 'position2.data', 'position5.10.data', 'position5.3.data']

Sắp xếp theo địa phương (hoặc “Sắp xếp theo con người”)

Đây là nơi các ký tự không phải là số cũng được sắp xếp dựa trên ý nghĩa của chúng, không phải theo giá trị thứ tự của chúng và dấu tách hàng nghìn phụ thuộc vào ngôn ngữ và dấu tách thập phân được tính trong số. Điều này có thể đạt được với chức năng sắp xếp của con người

>>> a = ['Apple', 'apple15', 'Banana', 'apple14,689', 'banana'] >>> natsorted(a) ['Apple', 'Banana', 'apple14,689', 'apple15', 'banana'] >>> import locale >>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 'en_US.UTF-8' >>> natsorted(a, alg=ns.LOCALE) ['apple15', 'apple14,689', 'Apple', 'banana', 'Banana'] >>> from natsort import humansorted >>> humansorted(a) # shortcut for natsorted with alg=ns.LOCALE ['apple15', 'apple14,689', 'Apple', 'banana', 'Banana']

Bạn có thể thấy rằng bạn cần đặt ngôn ngữ một cách rõ ràng để làm việc này (như trong ví dụ). Vui lòng xem các vấn đề về ngôn ngữ và phần bên dưới trước khi sử dụng chức năng sắp xếp của con người

Tùy chỉnh thêm Natsort

Nếu bạn cần kết hợp nhiều công cụ sửa đổi thuật toán (chẳng hạn như ns. THẬT, ns. ĐỊA PHƯƠNG, và ns. IGNORECASE), bạn có thể kết hợp các tùy chọn bằng cách sử dụng toán tử OR theo bit (. ). Ví dụ,

>>> a = ['Apple', 'apple15', 'Banana', 'apple14,689', 'banana'] >>> natsorted(a, alg=ns.REAL | ns.LOCALE | ns.IGNORECASE) ['Apple', 'apple15', 'apple14,689', 'Banana', 'banana'] >>> # The ns enum provides long and short forms for each option. >>> ns.LOCALE == ns.L True >>> # You can also customize the convenience functions, too. >>> natsorted(a, alg=ns.REAL | ns.LOCALE | ns.IGNORECASE) == realsorted(a, alg=ns.L | ns.IC) True >>> natsorted(a, alg=ns.REAL | ns.LOCALE | ns.IGNORECASE) == humansorted(a, alg=ns.R | ns.IC) True

Tất cả các tùy chỉnh có sẵn có thể được tìm thấy trong tài liệu dành cho

Bạn cũng có thể thêm các hàm chuyển đổi tùy chỉnh của riêng mình với đối số key. Chúng có thể được sử dụng với alg nếu bạn muốn

>>> a = ['apple2.50', '2.3apple'] >>> natsorted(a, key=lambda x: x.replace('apple', ''), alg=ns.REAL) ['2.3apple', 'apple2.50']

Sắp xếp các loại hỗn hợp

Bạn có thể kết hợp các kiểu int, float và str (hoặc unicode) khi sắp xếp

>>> a = ['4.5', 6, 2.0, '5', 'a'] >>> natsorted(a) [2.0, '4.5', '5', 6, 'a'] >>> # sorted(a) would raise an "unorderable types" TypeError

Xử lý byte

natsort không chính thức hỗ trợ kiểu byte, nhưng các chức năng tiện lợi được cung cấp giúp bạn giải mã thành str trước

>>> from natsort import as_utf8 >>> a = [b'a', 14.0, 'b'] >>> # natsorted(a) would raise a TypeError (bytes() < str()) >>> natsorted(a, key=as_utf8) == [14.0, b'a', 'b'] True >>> a = [b'a56', b'a5', b'a6', b'a40'] >>> # natsorted(a) would return the same results as sorted(a) >>> natsorted(a, key=as_utf8) == [b'a5', b'a6', b'a40', b'a56'] True

Tạo khóa sắp xếp có thể tái sử dụng và sắp xếp tại chỗ

Về cơ bản, natsorted hoạt động bằng cách tạo khóa sắp xếp tùy chỉnh bằng cách sử dụng natsort_keygen và sau đó chuyển khóa đó đến khóa sắp xếp tích hợp sẵn. Bạn có thể tự mình sử dụng hàm natsort_keygen để tạo khóa sắp xếp tùy chỉnh để sắp xếp tại chỗ bằng danh sách. phương pháp sắp xếp

________số 8

Tất cả các tùy chỉnh thuật toán được đề cập trong phần này cũng có thể được áp dụng cho natsort_keygen thông qua tùy chọn từ khóa alg

Chủ đề