[regex] R의 문자열에서 모든 특수 문자를 제거 하시겠습니까?

R의 문자열에서 모든 특수 문자를 제거하고 공백으로 바꾸는 방법은 무엇입니까?

제거 할 일부 특수 문자는 다음과 같습니다. ~!@#$%^&*(){}_+:"<>?,./;'[]-=

나는 해봤 regex[:punct:]패턴하지만 그것은 단지 문장 부호를 제거합니다.

질문 2 : 그리고 다음과 같은 외국어에서 문자를 제거하는 방법 : â í ü Â á ą ę ś ć?

답변 : [^[:alnum:]]제거 ~!@#$%^&*(){}_+:"<>?,./;'[]-=에 사용 [^a-zA-Z0-9]하고 â í ü Â á ą ę ś ć, regex또는 regexpr기능 을 제거 하는 데 사용 합니다.



답변

원하지 않는 문자를 식별 하려면 정규식 을 사용해야 합니다. 가장 쉽게 읽을 수있는 코드의 경우 기본 R에서도 작동 하지만 패키지 str_replace_all에서 를 원합니다 .stringrgsub

정확한 정규식은 수행하려는 작업에 따라 다릅니다. 질문에서 제공 한 특정 문자를 제거 할 수 있지만 모든 구두점 문자를 제거하는 것이 훨씬 쉽습니다.

x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")

(기본 R에 해당하는 값은 gsub("[[:punct:]]", " ", x)입니다.)

대안은 영숫자가 아닌 모든 문자를 교체하는 것입니다.

str_replace_all(x, "[^[:alnum:]]", " ")

문자, 숫자 또는 문장 부호를 구성하는 정의는 로케일에 따라 약간 씩 다르므로 원하는 것을 정확히 얻기 ​​위해 약간의 실험이 필요할 수 있습니다.


답변

정규식을 사용하여 “미친”문자를 제거하는 대신 ASCII로 변환하면 악센트가 제거되지만 문자는 유지됩니다.

astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')

결과적으로

[1] "Abcdeacoauu"


답변

특수 문자를 아포스트로피로 변환하고,

Data  <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)

아래 코드는 추가 ” ‘아포스트로피를 제거합니다.

Data <- gsub("''","" , Data ,ignore.case = TRUE)

gsub(..)특수 문자를 아포스트로피로 바꾸는 기능 사용


답변