从R中的字符串中删除表情符号

时间:2016-07-06 02:37:41

标签: r regex twitter unicode substitution

我有一个推文列表,其中许多包含需要删除的表情符号。在R中这样做最有效的方法是什么?

我尝试过以下方法,该方法应该替换所有以" \"开头的单词。有一个空白,但我收到此错误

some_tweets <- gsub("\\\w+ *", "", some_tweets)
Error: '\w' is an unrecognized escape in character string starting ""\\\w"

以下是数据样本:

> head(some_tweets)
[1] "ஆமா நான் பாக்கவே இல்லை \U0001f625\U0001f625\U0001f625"                               
[2] "எனக்கு அனுப்பலாமே \U0001f913\U0001f913\U0001f913"                                  
[3] "அவர் ஏன்டா ப்ளாக் பண்ணார் \U0001f602\U0001f602\U0001f602\U0001f602"                        
[4] "ஆமா"                                                                           
[5] "RT : சும்மார்றா சுன்னி.. ~ ஆதவன்"                                                      
[6] "கைலியை எல்லாம் லூஸ் பண்ணிகிட்டு உக்காந்து இருக்கேன் அடுத்து போடுங்கயா \U0001f608\U0001f608\U0001f608"


> dput(head(some_tweets))
c("ஆமா நான் பாக்கவே இல்லை \U0001f625\U0001f625\U0001f625", 
"எனக்கு அனுப்பலாமே \U0001f913\U0001f913\U0001f913", 
"அவர் ஏன்டா ப்ளாக் பண்ணார் \U0001f602\U0001f602\U0001f602\U0001f602", 
"ஆமா", "RT : சும்மார்றா சுன்னி.. ~ ஆதவன்", 
"கைலியை எல்லாம் லூஸ் பண்ணிகிட்டு உக்காந்து இருக்கேன் அடுத்து போடுங்கயா \U0001f608\U0001f608\U0001f608"
)

2 个答案:

答案 0 :(得分:10)

查看regular-expressions.info on Unicode,它在正则表达式中对Unicode有详尽的解释。这里重要的部分是您可以将Unicode字符与\p{xx}匹配,其中xx是他们所在的任何类的名称(例如L代表字母{{1}标记)。在这里,您的表情符号似乎在MSo的简写)和Other_SymbolCn的简写)类中,因此我们可以将它们分为:

Unassigned

请注意,您需要gsub('\\p{So}|\\p{Cn}', '', some_tweets, perl = TRUE) ## [1] "ஆமா நான் பாக்கவே இல்லை " ## [2] "எனக்கு அனுப்பலாமே " ## [3] "அவர் ஏன்டா ப்ளாக் பண்ணார் " ## [4] "ஆமா" ## [5] "RT : சும்மார்றா சுன்னி.. ~ ஆதவன்" ## [6] "கைலியை எல்லாம் லூஸ் பண்ணிகிட்டு உக்காந்து இருக்கேன் அடுத்து போடுங்கயா " 设置,因为在R的默认POSIX 1003.2正则表达式中未启用此表示法;请参阅perl = TRUE?base::regex

答案 1 :(得分:0)

您可以通过这种方式轻松地从 R 中的字符串中删除所有表情符号:

library(rtweet) # To get emojis dataset
emojis # Look at emojis

library(stringr)
str_remove_all(string = emojis$code, pattern = '[:emoji:]')