데이터 파일에서 ASCII가 아닌 문자 제거
나는 잔뜩있어 csv
내가 R에 읽고 패키지에 포함하고있어 것을 파일 / 데이터에 폴더 .rdata
형식입니다. 불행히도 데이터의 ASCII가 아닌 문자는 검사에 실패합니다. tools
패키지는 ASCII 문자가 아닌 문자 (확인하기 위해 두 가지 기능이 showNonASCII
와 showNonASCIIfile
)하지만 난 그들을 청소 / 제거를 찾을 수없는 것.
다른 UNIX 도구를 탐색하기 전에이 모든 작업을 R에서 수행하여 원시 데이터에서 최종 제품까지 완전한 워크 플로를 유지하는 것이 좋습니다. 비 ASCII 문자를 제거하는 데 도움이되는 기존 패키지 / 기능이 있습니까?
비 ASCII 문자 를 간단히 제거 하려면 base R iconv()
, setting을 사용할 수 있습니다 sub = ""
. 다음과 같이 작동합니다.
x <- c("Ekstr\xf8m", "J\xf6reskog", "bi\xdfchen Z\xfcrcher") # e.g. from ?iconv
Encoding(x) <- "latin1" # (just to make sure)
x
# [1] "Ekstrøm" "Jöreskog" "bißchen Zürcher"
iconv(x, "latin1", "ASCII", sub="")
# [1] "Ekstrm" "Jreskog" "bichen Zrcher"
하려면 찾아 당신은 아마 다음과 같은 아이디어를 적용 할 수, ASCII 문자가 아닌 문자, 또는 파일에 전혀 어떤이 있다면 찾을 수 :
## Do *any* lines contain non-ASCII characters?
any(grepl("I_WAS_NOT_ASCII", iconv(x, "latin1", "ASCII", sub="I_WAS_NOT_ASCII")))
[1] TRUE
## Find which lines (e.g. read in by readLines()) contain non-ASCII characters
grep("I_WAS_NOT_ASCII", iconv(x, "latin1", "ASCII", sub="I_WAS_NOT_ASCII"))
[1] 1 2 3
요즘에는 일반적인 유니 코드 변환 기능을 제공하는 stringi 패키지를 사용하는 것이 약간 더 나은 접근 방식입니다. 이렇게하면 원본 텍스트를 최대한 보존 할 수 있습니다.
x <- c("Ekstr\u00f8m", "J\u00f6reskog", "bi\u00dfchen Z\u00fcrcher")
x
#> [1] "Ekstrøm" "Jöreskog" "bißchen Zürcher"
stringi::stri_trans_general(x, "latin-ascii")
#> [1] "Ekstrom" "Joreskog" "bisschen Zurcher"
비 ASCII 문자가 포함 된 모든 단어 (@Hadley에서 차입 코드)를 제거하려면 패키지를 사용할 수 있습니다 xfun
과 filter
에서를dplyr
x <- c("Ekstr\u00f8m", "J\u00f6reskog", "bi\u00dfchen Z\u00fcrcher", "alex")
x
x %>%
tibble(name = .) %>%
filter(xfun::is_ascii(name)== T)
참고 URL : https://stackoverflow.com/questions/9934856/removing-non-ascii-characters-from-data-files
'program tip' 카테고리의 다른 글
경로의 대상에 파일을 생성하지 않고 Python에서 경로가 유효한지 확인하십시오. (0) | 2020.11.04 |
---|---|
commons httpclient-GET / POST 요청에 쿼리 문자열 매개 변수 추가 (0) | 2020.11.04 |
파이썬은 Ruby에서 || =와 같은 "또는 같음"함수를 가지고 있습니까? (0) | 2020.11.03 |
셀에서 UITableViewCell indexPath를 얻는 방법은 무엇입니까? (0) | 2020.11.03 |
파이썬 목록의 모든 요소에 논리 연산자를 적용하는 방법 (0) | 2020.11.03 |