Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 내부에 숫자가 있는 문자열을 올바르게 정렬하는 방법은 무엇입니까?

<시간/>

문자열 내의 숫자를 기준으로 정렬하려는 이러한 유형의 정렬을 자연 정렬 또는 휴먼 정렬이라고 합니다. 예를 들어 다음과 같은 텍스트가 있는 경우:

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

그런 다음 정렬된 목록을 다음과 같이 지정합니다.

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

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

이를 위해 sort()가 사용하는 추가 매개변수를 사용할 수 있습니다. 목록의 항목에서 키를 계산하기 위해 호출되는 함수입니다. 정규식을 사용하여 문자열에서 숫자를 추출하고 텍스트와 숫자를 모두 기준으로 정렬합니다.

 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

이렇게 하면 결과가 표시됩니다.

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