regex 在R中删除字符串中的特殊字符

lfapxunr  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(202)

我有一个数据框,我想在其中删除在特定列中找到的所有圆括号。在本例中是在Z列。我编写的代码只删除了一些圆括号。它删除了遇到的第一个方括号,并忽略了其余的方括号。我能否获得一些帮助,以了解如何删除所有圆括号。谢谢

library(tidyverse)
FRUIT <- data.frame("X" = c(1,2,3), 
                 "Y" = c("A1", "A2", "A3"),
                 "Z" = c('[LEMON(ORANGE)xxx[LEMON(GRAPE)]', "[PEAR(APPLE)]xxxORANGE(APPLE)", "PEACHxxx[APR(ICOT)]"), 
                 stringsAsFactors = FALSE)

输出数据臂为

X Y   Z
1 A1   [LEMON(ORANGE)xxx[LEMON(GRAPE)]
2 A2   [PEAR(APPLE)]xxxORANGE(APPLE)
3 A3   PEACHxxx[APR(ICOT)]

我尝试删除括号的代码如下所示:

fruit2<-FRUIT%>%
  mutate(Z=str_remove(Z,"\\("))%>%
  mutate(Z=str_remove(Z,"\\)"))

这段代码的问题是它没有删除所有的括号,它只删除了最先遇到的括号,而忽略了其余的括号,输出如下:

X Y   Z
 1 A1   [LEMONORANGExxx[LEMON(GRAPE)]
2 A2   [PEARAPPLE]xxxORANGE(APPLE)
3 A3   PEACHxxx[APRICOT]

我想要的输出是:

X Y   Z
 1 A1   [LEMONORANGExxx[LEMONGRAPE]
2 A2   [PEARAPPLE]xxxORANGEAPPLE
3 A3   PEACHxxx[APRICOT]
goqiplq2

goqiplq21#

只需将str_remove替换为str_remove_all,即可获得所需的输出:

FRUIT %>%
  mutate(Z = str_remove_all(Z, "\\(")) %>%
  mutate(Z = str_remove_all(Z, "\\)"))

#>   X  Y                           Z
#> 1 1 A1 [LEMONORANGExxx[LEMONGRAPE]
#> 2 2 A2   [PEARAPPLE]xxxORANGEAPPLE
#> 3 3 A3           PEACHxxx[APRICOT]

相关问题