카테고리 없음

파이썬 데이터를 분리하는 split 여러개의 구분기호는 re.split()

에스도비91 2022. 7. 7. 23:55
반응형

파이썬 2번째 포스팅은 split & join(맛보기)

솔직히, join 함수는 그닥 쓸 일이 별로 없습니다.

 

split() 함수

엑셀에서의 '데이터' > '텍스트 나누기' 와 비슷한 기능

구분 기호로 나열된 데이터들을 쓰기 좋게 하나하나

나눠주는 함수로 input과 궁합이 좋아 여러 데이터를

구분기호와 함께 한번에 입력할 때 사용합니다.

(구분기호라기보다 구분자, 파이썬에선 굳이 기호가

아니라도 그 어떤 것으로든 나눌 수 있습니다)

W=input('평일수 총월일수 휴가:').split()
print(W)

구분 기호는 split의 괄호 안에 넣으면 되는데 미입력 시

' ' 공백으로 나눠줍니다. 구분기호를 tab으로 입력하려면

위와 같이 split() 괄호 안에 '\t' 를 입력하면 되는데

input 데이터 입력 시 쥬피터(Jupyter)에서 텝 키를

누르면 다음 코드로 넘어가버리니 메모장이나

다른 곳에 데이터를 적고 복붙해 오세요.

cf. '#' 뒤에 입력들은 주석으로 코드에 영향을 주지 않습니다.

 

.split()으로 쪼갠 뒤에도 input으로 입력한건 str타입

이니 숫자 데이터라면 int 혹은 float로 바꿔 줘야 합니다.

한꺼번에 바꾸기 위해 for loop을 쓰는데, 아래 코드 한 줄

W=[int(W[i]) for i in range(0,len(W))] ## 실수라면 int 대신 float 기입

더 쓰면 되고 이건 차후 for문(loop)과

List comprehension 을 배우면 이해되실 겁니다.

 

심화 단계 - re.split()

input을 직접 쓰는게 아닌 빅데이터를 복붙해오는데

구분기호가 여러 종류인 경우가 있습니다. 그럴 때는

.split()으로는 한번에 분리가 안되더군요. 이 때는

import re 패키지를 불러와서 re.split을 사용하고

정규식 언어를 사용합니다.

 

정규식 언어 - 빠른 참조

이 빠른 참조에서는 정규식 패턴을 사용하여 입력 텍스트와 일치시키는 방법을 알아봅니다. 패턴은 하나 이상의 문자 리터럴, 연산자 또는 구문을 포함합니다.

docs.microsoft.com

정규식 언어가 많이 복잡하니 위 링크로 들어가 필요

할 때마다 참고하세요. 흔히 쓰는 예를 들어보자면

\s 는 공백 문자( \ t \ n \ x \ f \ r )를 포괄합니다.

( \t : tab, \n : 엔터 말고는 저도 뭔지 잘 몰라요ㅋㅋ )

a=input('메모장에서 복사해오세요')
b=a.split('\s') ; print(b)
import re
c=re.split('\s',a) ; print(c)

여러 문자를 포괄하는 정규식 언어를 쓰면

위의 예처럼 ' '(공백)과 \t (Tab) 이 구분기호로

섞여있는 데이터를 하나하나 분리해낼 수 있습니다.

a.split('\s')로는 안되고 re.split('\s', a)로 가능!!

예시로 '\n' 엔터도 넣어보려했으나 input 함수 자체가

엔터는 입력이 안됩니다. 엑셀에서 복붙해 오는 경우

구분기호 '\n'도 분리할 수 있으면 활용성이 좋은데

이건 차후 강의에서 clipboard로 가져와 해결할께요.

 

join() 함수

split 함수보다 활용성은 떨어지나 아주 가끔 쓸데가

있습니다. split과 반대로 리스트를 하나의 string으로

이어주는데 '구분기호'.join(리스트) 로 쓰면 됩니다.

a=['1', '2', '3', '4', '5']
print(''.join(a))
print('\n'.join(a))

 join의 경우엔 굳이 데이터 복잡해지게

여러 구분기호를 쓸 일은 없겠죠?