从句子中删除不相关的字符

时间:2013-04-15 11:37:35

标签: r

我有以下句子:

**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**

我想只提取那些被定义相关的单词:I, WANT, ONLY, THESE, WORDS, NEXT, STEP。应从句子中删除所有其他字符(数字,字母,特殊)。

在这种情况下,产生的句子将是:

I WANT ONLY THESE.

我有数千行这样的行,每行都有自己的有用词之间的字符集。有没有一种有效的方法来摆脱R?

3 个答案:

答案 0 :(得分:9)

string <- "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
regmatches(string, gregexpr("I|WANT|ONLY|THESE|WORDS|NEXT|STEP", 
                            string))

[[1]]
[1] "I"     "WANT"  "ONLY"  "THESE"

编辑:如果您想转换回句子,请说我将匹配存储在名为matches的对象中:

sentencify <- function(sentence){
  paste0(paste(sentence, collapse=" "), ".")
}

lapply(matched, sentencify)

[[1]]
[1] "I WANT ONLY THESE."

答案 1 :(得分:2)

这是一种方法,假设您有一个要检查的列表:

> mystring2 <- "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
> mystring2
[1] "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
> temp <- strsplit(mystring2, "[^a-zA-Z]")[[1]]
> myWords <- c("I", "WANT", "ONLY", "THESE", "WORDS", "NEXT", "STEP")
> temp[temp %in% myWords]
[1] "I"     "WANT"  "ONLY"  "THESE"

答案 2 :(得分:2)

如果您没有相关字词列表,请hunspell自动执行此操作:)

> system(paste('echo "', gsub('\\W', ' ', '**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**'), '" | hunspell -G -d en_US'))
I
WANT
ONLY
RA
THESE