Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để sắp xếp chính xác một chuỗi với một số bên trong trong Python?

Kiểu sắp xếp này mà bạn muốn sắp xếp trên cơ sở các số bên trong chuỗi được gọi là sắp xếp tự nhiên hoặc sắp xếp con người. Ví dụ:nếu bạn có văn bản:

['Hello1','Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']

Sau đó, bạn muốn danh sách được sắp xếp là:

['Hello1', 'Hello2','Hello12', 'Hello17', 'Hello25', 'Hello29']

và không:

['Hello1','Hello12', 'Hello17', 'Hello2', 'Hello25', 'Hello29']

Để làm điều này, chúng ta có thể sử dụng tham số bổ sung mà sort () sử dụng. Đây là một hàm được gọi để tính khóa từ mục nhập trong danh sách. Chúng tôi sử dụng regex để trích xuất số từ chuỗi và sắp xếp trên cả văn bản và số.

 import re
 def atoi(text):
    return int(text) if text.isdigit() elsetext
def natural_keys(text):
    return [ atoi(c) for c in re.split('(\d+)',text) ]
 my_list =['Hello1', 'Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
 my_list.sort(key=natural_keys)
print my_list

Điều này sẽ cung cấp cho bạn kết quả:

['Hello1', 'Hello2','Hello12', 'Hello17', 'Hello25', 'Hello29']