2015-10-28 2 views
1

Я пытаюсь избавиться от некоторых строк символов Unicode, распространенных в моих данных.R: Perl Regex для строки символа Юникод

Sample data <- "['oguma', 'makeup', u'\u0e27\u0e34\u0e15\u0e32\u0e21\u0e34\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e47\u0e01', 'jeban',]" 

Я хочу захватить все, начиная с u '\ и включить запятую в конце.

Я думал, начиная с:

gsub("u/\\/\'.... 

+ все, включая следующую запятую, но я не знаю, как сказать, что вторая часть.

Для результата:

Sample data <- "['oguma', 'makeup', 'jeban',]" 

предложения?

+0

Вы ожидаете, что результатом будет '' ['oguma', 'makeup', u '', 'jeban',] "'? Взгляните на [это демо] (http://ideone.com/cpoodW). Дело в том, что это не буквальные коды, это символы вне диапазона ASCII. –

+0

Я не знаю, какой движок R использует, но это не Perl (поскольку ничего, кроме 'perl', использует это). Может быть, это PCRE? Скорректированные теги. – ikegami

ответ

1

Ниже приведено решение для регулярных выражений, которое удаляет подстроки, начиная с u', а затем с символами не ASCII (1 или более) и заканчивается запятой (необязательно, 1 или 0) и пробелами (также необязательно, 0 или более):

data <- "['oguma', 'makeup', u'\u0e27\u0e34\u0e15\u0e32\u0e21\u0e34\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e47\u0e01', 'jeban',]" 
gsub("u'[^[:ascii:]]+',?\\s*", "", data, perl=T) 
## => [1] "['oguma', 'makeup', 'jeban',]" 

См IDEONE demo

Обратите внимание, что \u0e27 -как подстроки в вашем примере, только не-ASCII символы, которые - если напечатать строку - будет отображаться правильно, так как эти буквы/символы (здесь , u'วิตามินหน้าเด็ก', тайский для «витаминов для детей» - Google T ranslate).

Смежные вопросы