>백엔드 개발 >파이썬 튜토리얼 >Python에서 숫자가 포함된 문자열을 자연스럽게 정렬하는 방법은 무엇입니까?

Python에서 숫자가 포함된 문자열을 자연스럽게 정렬하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-30 01:46:10597검색

How to Sort Strings Containing Numbers Naturally in Python?

숫자가 포함된 문자열 정렬

숫자가 포함된 문자열을 처리할 때 알파벳순으로 정렬하면 원하는 결과를 얻지 못할 수 있습니다. 이러한 문자열을 올바르게 정렬하려면 텍스트 구성 요소와 숫자 구성 요소를 모두 고려해야 합니다.

사람 정렬(자연 정렬)

사람 정렬이라고도 하는 자연 정렬은 인간이 인식하는 방식과 일치하는 방식으로 항목을 정렬하는 데 사용되는 기술입니다. 이 접근 방식에는 문자열에서 숫자를 추출한 다음 숫자 값을 기준으로 정렬하는 작업이 포함됩니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.