본문 바로가기
R프로그래밍

R프로그래밍 - 문자열 대체 함수 gsub [], () <> 없애기

by 미스터탁 2020. 7. 3.

stringr  패키지 안에 문자열을 찾아서 대체해주는 str_replace함수가 있습니다.

 

하지만 저 같은 경우, gsub함수가 훨씬 더 쉽게 쓸수 있다고 생각해서 gsub함수를 자주 사용합니다.

 

gsub함수는 특정 문자열이나 패턴을 찾아서 내가 원하는 문자열로 대체 또는 제거 할 수 있도록 도와주는 함수입니다.

 

 

사용법은 아래와 같습니다.

gsub("바꾸고자하는 대상의 text 또는 패턴","대체할 text",text객체)

 

 

 

첫번째 예제는 " " 공백을 "" 제거하는 예제이고

두번째 예제는 " " 공백을 | 로 대체하는 예제이고

세번째 예제는 '언어'라는 단어를 'programming 언어'로 대체하는 예제 입니다.

text<-("R은 매우 쉬운 언어 입니다")

gsub(" ","",text)
gsub(" ","|",text)
gsub("언어","programming언어",text)

 

크롤링을 하다 보면 아래 예제 코드의 text2와 같이 < > 이런 tag나 \t와 같은 html tag들이 자주 볼 수 있습니다. 이러한 tag들을 제거할때에도 gsub함수를 이용합니다.

 

첫번째 예제 코드의

 

<.*?> 는 '< > 안에 있는 모든것'을 의미합니다.

 

그래서 코드 gsub("<.*?>","",text2) 는 "< > 안에 있는 모든것을 제거해라 " 라는 의미를 지닙니다.

 

gsub("\t","",text2) 는 \t 를 제거하는 코드겠죠?

 

제거할게 많을 때에는 세번째 코드로 | 연산자 (or연산자)를 이용해서 한번에 제거 할 수 있습니다.

 

"<.*?>|\t" 이 코드는 "< >안에 있는 모든 것 또는 \t" 를 의미합니다.

 

그래서 세번째 코드는 < > tag와 \t 를 한번에 없애는 코드인 것이죠.

 

text2<-("<tag dddd>\t\t\t R은 쉬운언어에요")
gsub("<.*?>","",text2)
gsub("\t","",text2)
gsub("<.*?>|\t","",text2)

 

 

 

반응형

 

 

이를 응용해서 아래 코드의 text3에 있는 대괄호 [ ] 안에 있는 것도 없애 보도록 하겠습니다.

 

두번째 줄의 코드를 이용하면 gsub("[.*?]","",text3) 아래 캡쳐화면처럼 대괄호가 제거되지 않는 모습을 보입니다. 

 

이는 대괄호 [] 가 하나의 text로 인식 되지 않기 때문입니다. 

 

쉽게 말해서 대괄호는 R에서 중요한 역할을 하는 기능을 이미하고 있습니다. 

 

우리는 벡터의 요소나 행렬 또는 list의 요소에 접근할 때에 [] 를 사용해서 접근하죠? 

 

그래서 대괄호 [] 를 문자 그대로 대괄호로 인식하게 하기 위해서는 세번째 코드 gsub("\\[.*?\\]","",text3) 처럼 

 

앞에 \\ 를 붙여 주어야 합니다. 여는 대괄호 [ 와  닫는 대괄호 ] 앞에 모두 \\ 를 붙여주셔야합니다.

 

아래 캡쳐화면을 보시면 잘 제거가 된 것을 볼 수 있습니다.

 

이와 마찬가지로 소괄호 ( ) 또한 이렇게 처리를 해주어야합니다. 소괄호 () 또한 R에서 이미 자주 쓰이고 있죠?

 

c(1, 2, 3) 이렇게 함수 내에 인자를 받을때에 사용합니다. 

 

한번에 대괄호와, 소괄호 모두 지우고 싶을때에는 | 연산자를 활용하면 되겠죠?

 

text3<-("[R programming]  R은 쉬운언어에요  (feat python)")
gsub("[.*?]","",text3)
gsub("\\[.*?\\]","",text3)
gsub("\\(.*?\\)","",text3)
gsub("\\[.*?\\]|\\(.*?\\)","",text3)

 

추가적으로 문자열 벡터의 앞뒤 공백을 제거해주는 함수는 stringr패키지 안에 있는 str_trim입니다.

 

문자열을 다루다 보면 자주 사용하는 함수이니, 기억해 두시는게 좋습니다.

 

 

 

 

www.inflearn.com/course/R-crawling?inst=f6858cb4

 

R로 하는 웹 크롤링 - 입문편 - 인프런

기초적인 R프로그래밍 실력을 쌓고 기본적인 크롤링 기법을 익힙니다 코드를 직접 작성하면서 한줄한줄 설명해 드립니다 입문 프로그래밍 언어 R 데이터 분석 웹 크롤링 온라인 강의 크롤링, 웹

www.inflearn.com

www.inflearn.com/course/R-crawling-2?inst=5e8c66cf

 

R로 하는 웹 크롤링 - 실전편 - 인프런

자유자재로 크롤링 할 수 있도록 만들어 드립니다. 대부분의 강의는 라이브 코딩으로 진행됩니다. 제가 코딩을 할때 같이 한줄한줄 따라 쳐주세요! 초급 프로그래밍 언어 데이터 사이언스 데이

www.inflearn.com

 

www.inflearn.com/course/R-text-mining?inst=6dff45e8

 

R로 하는 텍스트마이닝 (Top keyword부터 감성분석까지) - 인프런

R을 통해 텍스트의 top keyword / wordcloud / 감성분석 / Topic modeling까지 같이 차근차근 해보는 강의 입니다. 초급 프로그래밍 언어 데이터 사이언스 데이터 분석 R 데이터 분석 웹 크롤링 텍스트마이닝

www.inflearn.com

 

반응형

댓글