숫자가 포함된 문자열 정렬
숫자가 포함된 문자열을 처리할 때 알파벳순으로 정렬하면 원하는 결과를 얻지 못할 수 있습니다. 이러한 문자열을 올바르게 정렬하려면 텍스트 구성 요소와 숫자 구성 요소를 모두 고려해야 합니다.
사람 정렬(자연 정렬)
사람 정렬이라고도 하는 자연 정렬은 인간이 인식하는 방식과 일치하는 방식으로 항목을 정렬하는 데 사용되는 기술입니다. 이 접근 방식에는 문자열에서 숫자를 추출한 다음 숫자 값을 기준으로 정렬하는 작업이 포함됩니다.
Python에서는 다음 사용자 정의 정렬 키를 사용하여 자연 정렬을 구현할 수 있습니다.
def natural_keys(text): return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
이것은 함수는 문자열을 문자와 숫자로 분할한 다음 숫자 문자를 정수로 변환합니다. 정렬된 목록은 다음 사용자 정의 키로 sort() 함수를 호출하여 얻습니다.
alist = ["something1", "something12", "something17", "something2", "something25", "something29"] alist.sort(key=natural_keys) print(alist)
출력은 다음과 같습니다.
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
부동 소수점으로 문자열 정렬
문자열에 부동 소수점 숫자가 포함된 경우 자연 정렬 키를 수정하여 다음을 사용하여 부동 소수점으로 추출하고 변환할 수 있습니다. 다음 정규식:
def natural_keys(text): return [float(c) if c.isdigit() else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
이 수정된 키를 사용하면 부동 소수점 숫자로 문자열을 정렬할 수도 있습니다.
alist = ["something1", "something2", "something1.0", "something1.25", "something1.105"] alist.sort(key=natural_keys) print(alist)
출력은 다음과 같습니다.
['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
인간의 정렬 기술을 활용하면 인간의 직관에 맞춰 숫자가 포함된 문자열을 효율적으로 정렬할 수 있습니다.
위 내용은 Python에서 숫자가 포함된 문자열을 자연스럽게 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!