从R中的字符串中删除表情符号
remove emoji from string in R
我有一个推文列表,其中许多包含需要删除的表情符号。在 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"
)
查看 regular-expressions.info on Unicode,其中对正则表达式中的 Unicode 进行了详尽的解释。这里重要的部分是您可以将 Unicode 字符与 \p{xx}
匹配,其中 xx
是它们所在的任何 class 的名称(例如 L
表示字母,M
表示标记)。在这里,您的表情符号似乎在 So
(shorthand for Other_Symbol
)和 Cn
(shorthand for Unassigned
)classes,所以我们可以将它们分出:
gsub('\p{So}|\p{Cn}', '', some_tweets, perl = TRUE)
## [1] "ஆமா நான் பாக்கவே இல்லை "
## [2] "எனக்கு அனுப்பலாமே "
## [3] "அவர் ஏன்டா ப்ளாக் பண்ணார் "
## [4] "ஆமா"
## [5] "RT : சும்மார்றா சுன்னி.. ~ ஆதவன்"
## [6] "கைலியை எல்லாம் லூஸ் பண்ணிகிட்டு உக்காந்து இருக்கேன் அடுத்து போடுங்கயா "
请注意,您需要设置 perl = TRUE
,因为此符号在 R 的默认 POSIX 1003.2 正则表达式中未启用;参见 ?base::regex
和 ?grep
。
您可以通过这种方式轻松地从 R 中的字符串中删除所有表情符号:
library(rtweet) # To get emojis dataset
emojis # Look at emojis
library(stringr)
str_remove_all(string = emojis$code, pattern = '[:emoji:]')
我有一个推文列表,其中许多包含需要删除的表情符号。在 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"
)
查看 regular-expressions.info on Unicode,其中对正则表达式中的 Unicode 进行了详尽的解释。这里重要的部分是您可以将 Unicode 字符与 \p{xx}
匹配,其中 xx
是它们所在的任何 class 的名称(例如 L
表示字母,M
表示标记)。在这里,您的表情符号似乎在 So
(shorthand for Other_Symbol
)和 Cn
(shorthand for Unassigned
)classes,所以我们可以将它们分出:
gsub('\p{So}|\p{Cn}', '', some_tweets, perl = TRUE)
## [1] "ஆமா நான் பாக்கவே இல்லை "
## [2] "எனக்கு அனுப்பலாமே "
## [3] "அவர் ஏன்டா ப்ளாக் பண்ணார் "
## [4] "ஆமா"
## [5] "RT : சும்மார்றா சுன்னி.. ~ ஆதவன்"
## [6] "கைலியை எல்லாம் லூஸ் பண்ணிகிட்டு உக்காந்து இருக்கேன் அடுத்து போடுங்கயா "
请注意,您需要设置 perl = TRUE
,因为此符号在 R 的默认 POSIX 1003.2 正则表达式中未启用;参见 ?base::regex
和 ?grep
。
您可以通过这种方式轻松地从 R 中的字符串中删除所有表情符号:
library(rtweet) # To get emojis dataset
emojis # Look at emojis
library(stringr)
str_remove_all(string = emojis$code, pattern = '[:emoji:]')