Символы Unicode не отображаются после использования функции 'str_extract_all' (stringr) в Rstudio - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь извлечь серию слов из серии документов .txt с помощью функции stringr 'str_extract_all'.Все работает хорошо, за исключением того, что в результатах, которые я получаю, не отображаются символы Юникода (что хорошо в текстах UTF-8, из которых извлекается информация).Кто-нибудь знает, почему это происходит?


[Я использую RStudio в Windows 10.1]

Я преобразовал мой корпус из 5 .txt документов (романов) в кадр данных черезследующая команда:

tbl <- list.files(pattern = "*.txt") %>% 
    map_chr(~ read_file(.)) %>% 
    data_frame(text = .)

Символы Юникода выглядят нормально на 'tbl', но когда я запускаю функцию str_extract_all, они исчезают.Вот мой код:

uppercase <- sapply(str_extract_all(tbl, '(?<!^|\\.\\s|\\?\\s|\\!\\s)[A-Z][a-z]+'), paste)

Вот результат, который я получаю:

[1,] "For"       
[2,] "Ant"       
[3,] "Pati"      

и т. Д.

Когда следует читать:

[1,] "For"       
[2,] "Antón"       
[3,] "Patiño"      

и т. Д.

Это ошибка в строке или кто-нибудь сталкивался с чем-то подобным раньше?Любая помощь будет высоко ценится.Спасибо!

1 Ответ

0 голосов
/ 03 января 2019

К сожалению, класс символов [A-z] (и его подмножества [A-Z], [a-z]) не работает для специальных символов, таких как ñ и ó.[[:alpha:]] (буквенные символы), с другой стороны, похоже, работает.

stringr::str_extract_all(c("Antón", "Patiño"), '[A-z]+')

возвращает:

[[1]]
[1] "Ant" "n"  

[[2]]
[1] "Pati" "o"   

, тогда как

stringr::str_extract_all(c("Antón", "Patiño"), '[[:alpha:]]+')

возвращает желаемый результат:

[[1]]
[1] "Antón"

[[2]]
[1] "Patiño"
...