如何删除R中字符串中各个位置以特定字符(@)开头的任何内容?

迪尼奥

我有一列包含多条推文:

ID | Tweet
1    @ChipotleTweets @ChipotleTweets Becky is very nice
2    Happy Halloween! I now look forward to $3 booritos at @ChipotleTweets
3    Considering walking to @.ChipotleTweets in my llama onesie.

目标是删除 '@___' 和 @ 之后的任何内容 - 但不删除该字符串之外的文本。

目前正在播放此代码以检测“@”,但如果它不在句子的第一个位置,我将不会捡到任何东西

tweet_pattern <- " @\\w+"

Customer <- Customer %>% 
           clean_Tweet = ifelse(str_detect(text, tweet_pattern), 
                                str_remove(text, tweet_pattern), 
                                NA_character_))

期望的输出:

ID | Tweet                                                                  | cleaned_tweet 
1    @ChipotleTweets @ChipotleTweets Becky is very nice                       Becky is very nice
2    Happy Halloween! I now look forward to $3 booritos at @ChipotleTweets    Happy Halloween! I now look forward to $3 booritos at
3    Considering walking to @.ChipotleTweets in my llama onesie.              Considering walking to in my llama onesie.
阿克伦

我们可以更改模式以匹配零个或多个空格 ( \\s*) 后跟@一个或多个非空格 ( \\S+)str_remove_all以删除这些子字符串

library(stringr)
library(dplyr)
Customer %>%
     mutate(Cleaned_Tweet = str_remove_all(Tweet, "\\s*@\\S+"))

-输出

 ID                                                                 Tweet                                         Cleaned_Tweet
1  1                    @ChipotleTweets @ChipotleTweets Becky is very nice                                    Becky is very nice
2  2 Happy Halloween! I now look forward to $3 booritos at @ChipotleTweets Happy Halloween! I now look forward to $3 booritos at
3  3           Considering walking to @.ChipotleTweets in my llama onesie.            Considering walking to in my llama onesie.

注意:str_remove只删除匹配的第一个实例,即如果单个字符串中有多个匹配项,它会跳过其他匹配项并仅匹配第一个。我们需要str_remove_all删除匹配模式的所有实例。

数据

Customer <- structure(list(ID = 1:3, Tweet = c("@ChipotleTweets @ChipotleTweets Becky is very nice", 
"Happy Halloween! I now look forward to $3 booritos at @ChipotleTweets", 
"Considering walking to @.ChipotleTweets in my llama onesie."
)), class = "data.frame", row.names = c(NA, -3L))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

删除字符串中某个位置的字符-javascript

如何从Ruby中的字符串中的m个位置删除n个字符?

如何读取R中以特定字符串开头的行

从字符串中删除以特定字符开头的单词

如果在字符串的开头或在字符串的任何位置处连续则删除特定字符

如何从R中的字符串中删除特定模式?

如果字符串以数字开头但如何保留其他所有内容(在r中),如何删除数字?

如何在R中的字符串中的某个位置后添加双引号

删除以Rails中的特定字符串开头的cookie

如何在javascript中删除重复的任何以引号开头和结尾的字符串

从特定位置的字符串中删除字符

使用 PHP,如何在较长的字符串中搜索以特定内容开头和结尾的较短字符串?

在Postgres中的字符串中查找特定字符的第n个位置

删除R中以\ n或\ U开头的字符串

如何使用正则表达式删除R中具有特定开头和结尾的字符串段?

如何获取以#开头的单词并从字符串中删除

从PHP中特定字符串的开头删除字符串

如何从以php开头的字符串的文件中删除特定行

如何从日志文件中删除以特定字符串开头的每一行?

如何删除 VBA 中文本字符串末尾以数字开头的任何内容?

如何从Ruby中的字符串中删除特定字符?

如何从字符串中的特定索引中删除字符?

如何仅按位置删除字符串中的字符?

如何删除特定字符后的字符串中的所有内容?

如何在Python中删除从字符串到特定字符的所有内容

如何从字符串开头删除特定字符

在R中的字符串的每个第k个位置插入字符

从特定位置的字符串中删除字母

如何删除 Python 字符串中以大写字母开头的子字符串?