간단한 문자열 처리! tokenization 방법과 너무나도 어려운 정규식 ㅠㅠ
먼저 문자열 데이터를 tokenizing 하는 방법은 다양한 방법이 있지만!
가장 간편한 방법으로 소개하려 한다.
1. Split
split() 함수는 문자열을 일정한 규칙으로 잘라서 리스트로 만들어 주는 함수이다.
split(sep = '구분자', maxsplit = '구분횟수') 문법으로 사용된다.
이때 sep의 default는 'none'이지만 띄어쓰기로 생각하면 된다!
maxplit의 default는 -1로 최대 회수만큼 구분한다.
temp = "Hi, my name is sophia"
print(temp.split(','))
print(temp.split())
print(temp.split(maxsplit = 2))
>>
['Hi', ' my name is sophia']
['Hi,', 'my', 'name', 'is', 'sophia']
['Hi,', 'my', 'name is sophia']
위의 예제와 같이
1. 구분자 ','일 경우에는 Hi 뒤에 ','가 있기 때문에 한번만 분류 되어 총 2개의 요소가 생기고
2. 모두 기본값으로 되어있을 경우 띄어쓰기 기준으로 4번 분류되어 총 5개의 요소가 생긴다.
3. 또한, maxsplit을 2로 둘 경우 띄어쓰기 기준으로 2번 분류되어 총 3개의 요소가 생긴다.
maxsplit의 숫자 +1 개의 데이터로 구분된다고 생각하면 쉽다!
다음은 데이터프레임에 적용해보자!
temp = pd.DataFrame(columns = ['name', 'info'], data = [['sophia jun', 'my name is sophia'], ['sophi happy', 'hi nice to meet you']])
temp
>>
name info
0 sophia jun my name is sophia
1 sophi happy hi nice to meet you
temp['split_name'] = temp['name'].str.split()
temp['last name'] = temp['name'].str.split()[1]
temp
>>
name info split_name last name
0 sophia jun my name is sophia [sophia, jun] sophi
1 sophi happy hi nice to meet you [sophi, happy] happy
split은 문자열에 적용되는 함수이기 때문에, 원하는 열 뒤에 .str 로 문자열 형식으로 변경 후 적용해야 한다
또한, 적용 된 내용 중 특정 순서의 인덱스를 지정하여 따로 저장할 수 있다.
2. re.sub()
다음은 정규식을 활용한 특정 길이의 단어 제거!
모든 정규식을 다룰 것은 아니지만, 다른 문자열 처리 라이브러리를 사용하지 않고!
정규식을 활용하여 문자 개수를 필터링 하는 방법을 공유하고자 한다.
먼저, re.sub()은 아래의 상태로 변환된다
re.sub(정규 표현식, 대상 문자열 , 치환 문자)
정규 표현식 - 검색 패턴을 지정
대상 문자열 - 검색 대상이 되는 문자열
치환 문자 - 변경하고 싶은 문자
위에서 활용한 temp 데이터 프레임을 그대로 사용하여 예시를 만들어보자.
ex) 단어 개수가 2개 이하인 단어를 제거하고자 할때
import re
for i in temp['info']:
print(i)
print(re.sub(r'(\b\w{2}\b)', '', i))
print("*"*10)
>>
my name is sophia
name sophia
**********
hi nice to meet you
nice meet you
**********
위와 같이 적용하면 된다!
이때 문자열 앞에 r이 붙으면 해당 문자열이 구성된 그대로 문자열로 반환하며
\b는 공백
\w는 문자
{n}은 반복수를 의미한다.
풀어서 설명하자면!!
r'(\b\w{2}\b)'는
i문자열에 대해 \b(공백) 사이에 있는 \w문자가 {2}2회 반복될 경우 ' '으로 치환한다.
따라서, 'my name is sophia'의 경우
my와 is가 제외된 name sophia가 출력되는 것이고,
이때, my와 is는 띄어쓰기로 변환되기 때문에
' name sophia'가 출력되는 것이다!
자세한 정규식은 아래 링크를 통하면 더 자세히 알수 있다 :)
https://hamait.tistory.com/342
'코딩코딩' 카테고리의 다른 글
[git] git 기초 사용법(3) (0) | 2021.12.17 |
---|---|
[git] git 기초 사용법(2) (0) | 2021.12.15 |
[git] git 다운로드 (0) | 2021.12.15 |
코딩코딩 (0) | 2021.12.06 |
[python] lambda & apply 사용법 (0) | 2021.12.03 |
댓글