在 R 中删除括号“(”之前的空格

Remove whitespace before bracket " (" in R

我有将近 100,000 行的抓取数据已转换为数据框。一列是一串文本字符,但运行异常。在下面的示例中,有一段文本,其中包含我要删除的括号信息,我还想删除“(c)”。但是前面的space在技术上不是space(它被认为是白色space吗?)。

我不确定如何在此处重现该示例,因为当我 copy/paste 一条记录时,它被视为正常并且可以正常工作,但在抓取的数据中却没有。直觉检查是计算 spaces,它给了我 4,这意味着 ( 前面的 space 不是真正的 space。我不知道如何删除它!

我通常运行的代码如下。同样,以这种方式工作,但在我抓取的数据中不起作用。

test<-c("Barry Windham (c) & Mike Rotundo (c)")
test<-gsub("[ ][(]c[)]","",test)

您可以考虑使用:

test<-c("Barry Windham (c) & Mike Rotundo (c)")
gsub("(*UCP)\s+\(c\)", "", test, perl=TRUE)
# => [1] "Barry Windham & Mike Rotundo"

an online R demo

详情

  • (*UCP) - 使 PCRE 正则表达式中的所有 shorthand 字符 类(由于 perl=TRUE 是 PCRE)Unicode 识别
  • \s+ - 任何一个或多个 Unicode 空格
  • \(c\) - (c) 子字符串。

如果您需要保留 (c),捕获它并在替换中使用反向引用:

gsub("(*UCP)\s+(\(c\))", "\1", test, perl=TRUE)