R gsub是一个双引号

时间:2016-05-17 17:16:19

标签: regex r escaping gsub

我在数据框中有一个字符串字段,类似于:

"Young Adult – 8-9"" 

其中内部单曲“是我想要替换的东西:

"Young Adult - 8-9"

我该怎么做?我试图用双反斜杠逃脱:

gsub("\\"", "", string)

但出现此错误:错误:“gsub(”\“”,“”

中的意外字符串常量

2 个答案:

答案 0 :(得分:10)

您不需要在正则表达式中转义双引号。只需使用"\""'"'即可匹配单个双引号。

s = "Young Adult – 8-9\""
s
[1] "Young Adult – 8-9\""
gsub("\"", "", s)
[1] "Young Adult – 8-9"
gsub('"', "", s)
[1] "Young Adult – 8-9"

请参阅this IDEONE demo

注意:由于您要删除一些文字文本,您甚至不需要正则表达式,使用fixed=TRUE参数来加速操作:

gsub('"', "", s, fixed=TRUE)

答案 1 :(得分:1)

当您在 gsub 文件中保存带有 “”.R script 时,“” 将保存为 "

gsub("[“”]", "", s) # Doesn't work when you save this piece of code in a script

解决办法是先规范化双引号

x <- proustr::pr_normalize_punc(your_data_frame, your_column_name) %>%
     mutate(your_column_name = gsub('\"','', your_column_name))

您可以猜到 proustr::pr_normalize_punc 将所有 “” 转换为 \"