在表情符号之前放置一个空格

时间:2016-11-30 03:53:22

标签: r

我正在尝试清理一些文字。我有一个我不想从文本中删除的表情符号列表。我想在这些表情符号之前放一个空格,只有在没有一个表情符号的时候。

emojis = as.character(outer(c(":", ";", ":-", ";-","="),c(")", "(", "]", "[", "D", "o", "O", "P", "p","8"),FUN = paste,sep=""))

如果我有推文说。

Tweet = "I am so happy:)"

我希望那是

Tweet = "I am so happy :)"
代码运行后

这是一个非常简单的想法,但我找不到任何代码来执行此操作。

在他们之前需要空格的表情符号的完整列表:

 ":)"  ";)"  ":-)" ";-)" "=)"  ":("  ";("  ":-(" ";-(" "=("  ":]"  ";]"  ":-]" ";-]" "=]"  ":["  ";["  ":-[" ";-[" "=["  ":D"  ";D"  ":-D" ";-D" "=D"  ":o" ";o"  ":-o" ";-o" "=o"  ":O"  ";O"  ":-O" ";-O" "=O"  ":P"  ";P"  ":-P" ";-P" "=P"  ":p"  ";p"  ":-p" ";-p" "=p"  ":8"  ";8"  ":-8" ";-8" "=8" 

1 个答案:

答案 0 :(得分:4)

正则表达式可以提供帮助。

emojis = as.character(outer(c(":", ";", ":-", ";-","="),c("\\)", "\\(", "\\]", "\\[", "D", "o", "O", "P", "p","8"),FUN = paste,sep=""))
pat <- paste0("(\\w+)(", paste(emojis, collapse="|"), ")")
Tweet = "I am so happy:)"
sub(pat, "\\1 \\2", Tweet)
#[1] "I am so happy :)"