파이썬 팁

python] 파이썬 문자열 안에서 숫자만 분리하는 방법 정리, + 예외처리방법 ! - re.findall , str.split, try: except ValuError:

gomming 2020. 9. 6. 01:00

파이썬 코딩 중 특히 텍스트 파일을 불러와서 데이터 베이스 구축할 때가 자주 있는 데요

문자열로 불러온 데이터에서 숫자만 분리하여 배열을 생성하는 등 처리를 하고 싶은 경우 이 글을 참조하시면

아주아주 도움이 많이 되실 거 같아요

코린이 여러분들 화이팅 ! .!

 

우선 re 라이브러리를 이용하는 방법입니다.

import re 하여 라이브러리를 불러요고요

분리할 문자열을 여러 케이스로 생성해 봅니다.

str='N11/N12'는 문자와 숫자가 서로 붙어 있고 두 자리 이상인 경우예요

str1='N1 N2 N3 N4'는 한자리 숫자가 문자열과 함께 작성되어 있어요

nodstr='Node 1000001'은 문자열 내에 문자와 숫자가 들어가 있어요

re.findall('|d+', str)은 서로 붙어 있는 숫자를 붙여서 분리해 줍니다. 두 자리 이상의 수가 있을 때

이용하시면 좋겠죠?

re.findall('|d', str)은 숫자 하나하나 따로 분리해 줍니다.

위 이미지를 보시면 두 자리 숫자는 '|d'를 써서, 한자리 수는 '|d+'를 써서 잘 분리된 걸 볼 수 있어요

다음으로 split을 이용한 방법이 있어요 re.findall을 쓰면 소수는 분리하기 어려운데요

이럴 때 str.split() 기능을 써보세요

() 안에 separator를 입력하시면 적용됩니다. () 안을 비워두면 공백을 제거하고 ' ' space를 separator로 인식하여 분리됩니다. (',')이렇게 쓰시면 콤마 기준으로 분리 됩니다.

위에 nodstr은 공백으로 떨어져 있기 때문에 split()으로 잘 분리되었습니다.

split을 for문에 적용하여 리스트 안에 긴 문자열이 있는 경우 적용해 보실 수 있습니다.

아래 이미지를 보시죠

 

for 문을 리스트 자료형으로 실행하여 리스트에서 문자열을 순차적으로 word로 적용할 수 있어요

nodstr.split()하면 'Node'와 '1000001' 두 개 문자열로 분리되는데요

a라는 빈 리스트에 문자열을 정수로 변환하여 첨부하도록 합니다. <list.append(첨부대상)>

'Node'는 정수로 변환할 수 없어 ValueError가 발생하므로 try except 기능으로 예외 처리할 수 있어요

try: 아래 내용을 진행하면서 에러라 발생되면 except errortype: ;pass 위 이미지처럼 입력하여

예외 처리할 수 있습니다.

이 기능을 쓰면 에러를 내지 않고 다음 대상으로 넘어가게 됩니다.

!.! 참 많이 사용되는 기능이죠

부디 도움되셨기를 바랍니다.

코린이 여러분 저도 코린이지만 코딩하면서 막히는 부분이 있으면 댓글이나 쪽지 남겨 주세요 ~.~

예제로 만들어서 설명해 드립니다!.!

코딩은 매일 새롭고 재미있는 거 같아요