R语言移除字符串中引号及内部内容的问题求助
解决推特文本中移除引号及内部内容的问题
你的问题核心是数据里同时存在中文弯引号(“”)和英文直引号(""),之前的正则表达式只匹配了英文引号,导致中文引号包裹的内容没被处理。以下是两种可行的解决方案:
方案1:统一引号格式后处理
先把所有中文弯引号替换为英文直引号,再用正则移除引号及内部内容,步骤清晰易理解:
# 1. 将中文弯引号替换为英文直引号 df$text <- gsub("“|”", "\"", df$text) # 2. 移除所有英文引号及内部内容 df$text_clean <- gsub("\"[^\"]+\"", "", df$text) # 3. 清理残留的单独引号(处理嵌套引号后的残留) df$text_clean <- gsub("\"", "", df$text_clean)
方案2:直接匹配两种引号类型(推荐)
用正则同时匹配中文弯引号和英文直引号对,结合非贪婪匹配处理可能的嵌套情况:
library(stringr) # 移除所有中文/英文引号及内部内容 df$text_clean <- str_remove_all(df$text, "“.*?”|\"[^\"]+\"") # 清理残留的单独引号 df$text_clean <- str_remove_all(df$text_clean, "“|”|\"")
验证结果
处理后的数据框df$text_clean内容如下:
[1] "Example: https://t.co/ - MORE TEXT - example: finished." [2] "Text More text. https://t.co/"
完全符合移除引号及内部内容的需求。
内容的提问来源于stack exchange,提问作者Christina
相关产品推荐
相关产品推荐

