ACAIT

[BDA 데분기] 12주차 - 문자열 관련 함수 본문

학회 활동/BDA 7기(데이터 분석 기초반)

[BDA 데분기] 12주차 - 문자열 관련 함수

831x99 2024. 1. 31. 23:47

1. re, regex: 정규표현식

  • match(), fullmatch(), findall(), search() 등의 함수가 있는 모듈.
  • 문자열 처리 시 다앙한 사례에서 요구하는 조건의 패턴, 처리 방식을 만들어 처리하는 방법.
  • split, strip, 등의 문자열 문법이 정규표현식과 사용하면 다양한 응용 가능.
  • 이메일 주소 찾기, 아이디/비번 패턴 찾기 등 다양한 패턴 만들 수 있음.

  • 숫자 [0-9]
  • 소문자 [a-z]
  • 대문자 [A-Z]
  • 한글 [가-힣]
  • 자음모음 [ㄱ-ㅎ][ㅏ-ㅣ]
  • ^: Not. 제외하고 전부.
  • '+', '*': 0개 이상 또는 1개 이상의 패턴을 모두 찾는 것.

# 약어

  • \d 모든 숫자
  • \D 모든 숫자 제외
  • \w 영문, 대소문자, 숫자, 밑줄 문자 포함
  • \W 상기 제외

1-1. match(패턴, 문자열)

  • 문자열 시작부터 패턴이 일치하는지 확인.


1-2. search(패턴, 문자열)

  • 문자열 중간부터 패턴이 일치해도 결과 반환.


  • {} 숫자를 넣으면 해당 패턴의 문자 몇 개 찾아 달라.
  • e.g {3} 3개의 패턴을 찾아라.
  • 010-0000-0000


  • 정규표현식을 여러 개 합쳐서 사용 가능.


1-3. findall(패턴, 문자열)

  • 문자열에서 패턴에 맞는 부분을 전부 리스트로 반환.

1-4. finditer(패턴, 문자열)

  • 위와 동일하지만 iterator 형식으로 반환.

1-5. fullmatch(패턴, 문자열)

  • 문자열 시작과 끝이 정확하게 패턴과 일치할 때 반환.

1-6. split(패턴, 문자열, 최대 분할 수)

  • 문자열 패턴이 맞으면 리스트로 분할하는 함수.

1-7. sub(패턴, 교체, 문자열, 최대 교체 수)

  • 일치하는 패턴을 교체할 문자열로 교체.
  • subn(패턴, 교체, 문자열, 최대 교체 수, 플래그): 결과, 교체 수가 반환됨.

1-8. 정규 표현식 메소드

  • group(): 패턴 그룹에 일치하는 각 문자열 반환.
  • groups(): 패턴 그룹에 일치하는 문자열을 리스트로 반환.
  • start(): 패턴 일치하는 시작 인덱스 반환.
  • end(): 패턴 일치하는 마지막 인덱스 반환.
  • span(): 패턴 일치하는 시작부터 끝까지 인덱스 반환.


 

2. 실습 - pandas의 str 문법 응용


2-1. strip()

  • 문자열 시작과 끝의 공백 제거하는 문법. lstrip(), rstrip()
  • 시리즈 데이터.str.문법()


2-2. pad()

  • 문자열의 길이 맞추거나, 0 패딩 맞출 때 사용하는 문법.


2-3. center()

  • pad()와 유사하지만 문자열 가운데 정렬 후 양쪽에 특정 문자로 채움.


2-4. ljust(), rjust()

  • 각각 문자열을 왼쪽, 오른쪽 정렬 후 특정 문자열로 길이 맞추는 함수.


2-5. zfill()

  • 0으로 문자열 길이 맞추는 함수.


2-6. split()

  • 문자열 나누는 함수. 구분자, 원하는 값으로 나누기.
  • n: 구분자 기준으로 몇 번 나눌지.
  • expand = True: 여러 컬럼으로 나누기.
  • expand = False: 1개 컬럼에 나누기.


2-7. partition()

  • 좌측에 먼저 출현한 구분자를 나누는 것.
  • 새로 생성하는 컬럼 수만큼만 분할.
  • 문자열, 구분자, 문자열 순으로 반환되므로 구분자 포함하여 반환 컬럼 생성 필요.

# 코드 잘린 부분: df1['document'].str.partition(sep = ' ')


2-8. 문자 대체 함수

  • lower(): 전부 소문자로
  • upper(): 전부 대문자로
  • capitailize(): 앞 문자 대문자로
  • title(): 단위별 앞 문자 대문자로
  • swapcase(): 소문자는 대문자로, 대문자는 소문자로

2-9. replace()

  • 특정 문자를 다른 문자로 대체.


2-10. find()

  • 해당 문자가 어디에 있는지 인덱스 반환.
  • 1.0은 없다는 의미.


2-11. findall()

  • 수치가 아니라 해당되는 문자를 리스트로 반환.


2-12. slice()

  • 특정 인덱스 값만 반환.
  • start: 제거할 문자열 시작 인덱스.
  • stop: 제거할 문자열 마지막 인덱스.

2-13. slice_replace()

  • 조건 사이 인덱스 값을 다른 값으로 대체.


2-14. len()

  • 문자열 길이 반환.
  • 자연어를 계속 수치화하고 의미 있는 데이터 찾는 것이 머신러닝과 데이터 분석에 중요.