숫자가 포함된 문자열의 자연 정렬
숫자가 포함된 문자열을 정렬할 때 기본 정렬 방법으로는 원하는 결과가 나오지 않을 수 있습니다. 예를 들어, 문자열 "something12"는 "something2" 앞이 아닌 뒤에 배치될 수 있습니다.
이를 수정하기 위해 문자열 내의 숫자를 고려하는 자연 정렬을 사용할 수 있습니다. 방법은 다음과 같습니다.
필요한 모듈 가져오기:
먼저 정규식 처리를 위해 re 모듈을 가져옵니다.
import re
정의 도우미 기능:
도우미를 정의합니다. 문자열을 정수 및 부동 소수점으로 변환하는 함수:
def atoi(text): return int(text) if text.isdigit() else text def atof(text): try: retval = float(text) except ValueError: retval = text return retval
자연 정렬 함수 정의:
natural_keys 함수는 정규식을 사용하여 문자열을 구성 부분으로 분할합니다.
def natural_keys(text): return [atoi(c) for c in re.split(r'(\d+)', text)]
자연으로 분류하기 키:
정렬을 위한 키로 natural_keys 함수를 활용하면 문자열이 자연 순서로 배치됩니다.
alist = ["something1", "something12", "something17", "something2", "something25", "something29"] alist.sort(key=natural_keys) print(alist)
출력:
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
부동 소수점 처리:
다음을 포함하는 문자열을 정렬하려면 floats, floats와 일치하도록 natural_keys의 정규식을 수정합니다:
def natural_keys(text): return [atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
위 내용은 Python에서 숫자와 부동 소수점이 포함된 문자열에 대한 자연 정렬을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!