Ошибка в gsub слишком длинная с арабским языком в R - PullRequest
0 голосов
/ 25 декабря 2018

Я занимаюсь анализом текста на R с арабским языком и использую функцию gsub, но я получил ошибку, как показано здесь

Error in gsub("^\\x{0627}\\x{0644}(?=\\p{L})", "", x, perl = TRUE) : 
  invalid regular expression '^\x{0627}\x{0644}(?=\p{L})'
In addition: Warning message:
In gsub("^\\x{0627}\\x{0644}(?=\\p{L})", "", x, perl = TRUE) :
  PCRE pattern compilation error
        'character value in \x{} or \o{} is too large'
        at '}\x{0644}(?=\p{L})'

вот мой код

x<-("الوطن")
# Remove leading alef lam with optional leading waw
m <- gsub('^\\x{0627}\\x{0644}(?=\\p{L})', '', x, perl = TRUE)

любойможете мне помочь?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Наконец-то я решил проблему, проблема в том, что когда я импортирую данные на арабском языке как csv, затем применяю gsub Я получаю ошибку

    Error in gsub("^\\x{0627}\\x{0644}(?=\\p{L})", "", x, perl = TRUE) : 
   invalid regular expression '^\x{0627}\x{0644}(?=\p{L})'
   In addition: Warning message:
   In gsub("^\\x{0627}\\x{0644}(?=\\p{L})", "", x, perl = TRUE) :
   PCRE pattern compilation error
        'character value in \x{} or \o{} is too large'
        at '}\x{0644}(?=\p{L})'

Я выясняю, что мне нужно сохранить данныес encode= UTF-8, затем прочитайте его также с encode= UTF-8 Затем измените Local.нравится этот код:

Sys.setlocale("LC_CTYPE","arabic")
[1] "Arabic_Saudi Arabia.1256"
>  write.csv(x, file = "x.csv" , fileEncoding = "UTF-8")

y<-read.csv("C:/Users/Documents/x.csv",encoding ="UTF-8")
> Sys.setlocale("LC_CTYPE","arabic")
[1] "Arabic_Saudi Arabia.1256"
0 голосов
/ 25 декабря 2018

мне кажется, единственная проблема - это ваши кавычки:

> x <- "الوطن"
> gsub('^\\x{0627}\\x{0644}(?=\\p{L})', '', x, perl = TRUE)
[1] "وطن"

также проверьте вашу локаль ОС, так как у меня возникали некоторые похожие проблемы при попытке обработать текст на иврите, в то время как моя локаль Windows былаустановлен на US.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...