행궁동 데이터 엔지니어

반응형

Python에서 natsort 라이브러리를 활용해 텍스트로 된 숫자 정렬하는 방법입니다.

 

natsort 라이브러리의 natsorted() 메서드를 사용하면 텍스트를 쉽게 정렬할 수 있습니다.

상세 코드와 html 파일도 하단에 첨부합니다.  

 

아래는 os.listdir()로 숫자로 된 파일들을 불러오고 정렬하는 예제입니다.

 

정렬 전 
정렬 후

 

natsord.natsorted() 메서드 사용방법

  • natsort.natsorted(seqkey=Nonereverse=Falsealg=0)

Parameters 

  • seq (iterable) – The input to sort.
  • key (callable, optional) – A key used to determine how to sort each element of the iterable. It is not applied recursively. It should accept a single argument and return a single value.
  • reverse ({{True, False}}, optional) – Return the list in reversed sorted order. The default is False.
  • alg (ns enum, optional) – This option is used to control which algorithm natsort uses when sorting. For details into these options, please see the ns class documentation. The default is ns.INT.

Returrns

  • out – The sorted input.

출처 : https://natsort.readthedocs.io/en/master/api.html#standard-api

 

상세 코드

  • Python 상세 코드입니다.
  • 문자열(텍스트)로 인식된 숫자를 쉽게 정리할 수 있습니다.
import os
import natsort ## 숫자 정렬용 라이브러리
# 기본 라이브러리가 아니므로 pip install natsort로 설치

order_list = os.listdir('TXT')
# os.listdir() ← 디렉터리에 있는 파일목록 불러오는 ㅁ메소드
# 'TXT' ← 정렬할 대상이 있는 경로(디렉터리)

order_list[:15]
# 정렬상태 확인 결과 Python에서 문자열로 인식해 1-1 → 1-10 순서로 정렬되어 있음

['1-1.txt',
 '1-10.txt',
 '1-11.txt',
 '1-12.txt',
 '1-13.txt',
 '1-14.txt',
 '1-15.txt',
 '1-16.txt',
 '1-17.txt',
 '1-18.txt',
 '1-19.txt',
 '1-2.txt',
 '1-20.txt',
 '1-21.txt',
 '1-22.txt']

type(order_list[0]) 
# type 확인 결과 str(문자열)
str

after_order_list = natsort.natsorted(order_list)
# natsort.natsorted() 메소드로 정렬 
# natsort.natsorted(seq, key=None, reverse=False, alg=0) 상세 사용방법은 아래 경로에서
# https://natsort.readthedocs.io/en/master/api.html#standard-api

after_order_list
# 정렬결과 일부캡쳐

['1-1.txt',
 '1-2.txt',
 '1-3.txt',
 '1-4.txt',
 '1-5.txt',
 '1-6.txt',
 '1-7.txt',
 '1-8.txt',
 '1-9.txt',
 '1-10.txt',
 '1-11.txt',
 '1-12.txt',
 '1-13.txt',
 '1-14.txt',
 '1-15.txt',
 '1-16.txt',
 '1-17.txt',
 '1-18.txt',
 '1-19.txt',
 '1-20.txt',
 '1-21.txt',

 

 

  • 첨부 : html로 변환한 jupyter notebook 파일

example_natsort.html
0.28MB

 

  • html 파일 내용 스크린샷

 

궁금하신 사항은 댓글 남겨주세요.

 

감사합니다.

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band