r - 过滤掉R中包含UTF-8阿拉伯字符的列中的条目
问题描述
我有一个名为 event_table 的数据集,它有一个标题为“c.Comments”的列,其中包含主要是英文的字符串,但在一些评论条目中有一些阿拉伯语。我想过滤掉评论条目包含阿拉伯字符的行。
我将数据从 xlsx 文件读入 R,阿拉伯字符显示为 UTF-8 "< U+4903 >< U+483d >" (没有空格)等。
我尝试使用正则表达式来实现我想要的,但我试图匹配的字符串拒绝被过滤掉。我尝试了各种不同的正则表达式,但似乎没有一个能奏效。我会尝试从字面上过滤掉“
event_table <- event_table %>%
filter(!grepl("<U+", c.Comments, fixed = TRUE))
event_table <- event_table %>%
filter(!grepl("<U\\+", c.Comments)
“\x”、“\d\d\d\d”和各种其他组合对我没有任何帮助
我开始怀疑我的过滤方法可能是问题而不是正则表达式,所以任何建议都将不胜感激。
解决方案
grep
可以使用/grepl
使用 PCRE 正则表达式来检测阿拉伯字符,例如\p{Arabic}
:
> df <- data.frame(x=c("123", "abc", "ﺏ"))
> df
x
1 123
2 abc
3 <U+FE8F>
> grepl("\\p{Arabic}", df$x, perl=TRUE)
[1] FALSE FALSE TRUE
在你的情况下,代码看起来像
event_table <- event_table %>%
filter(!grepl("\\p{Arabic}", c.Comments, perl=TRUE))