programing

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

stoneblock 2023. 6. 18. 10:10

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

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

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

해봤습니다regex와 함께[:punct:]패턴이지만 구두점만 제거합니다.

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

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

기본 R의 솔루션:

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

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

정확한 정규식은 당신이 무엇을 하려고 하는지에 따라 달라집니다.질문에서 지정한 특정 문자만 제거할 수 있지만 모든 구두점 문자를 제거하는 것이 훨씬 쉽습니다.

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(..)특수 문자를 아포스트로피로 대체하는 기능

언급URL : https://stackoverflow.com/questions/10294284/remove-all-special-characters-from-a-string-in-r