r - 如何从R中的多个文档中提取多个引号?
问题描述
我有几个 Word 文件,其中包含我想从中提取引号之间的字符串的文章。如果每篇文章有一个引用,我的代码可以正常工作,但如果我有多个,R 会提取将一个引用与下一个引用分开的句子。
以下是我文章中的文字:
一只名叫印度的孟加拉虎在美国德克萨斯州失踪,被发现没有受伤,现在被转移到休斯顿的一个动物收容所。“我们找到了他,他很健康,”休斯顿警察局 (HPD) 重犯指挥官罗恩博尔扎说。他接着说,“我喜欢老虎”。这就是结局。
随后制定了一项全球恢复计划,世界自然基金会与个人、企业、社区、政府和其他保护合作伙伴一起不懈努力,将这一大胆而雄心勃勃的保护目标变为现实。“这一目标促进了更大规模的保护行动,这是迫切需要的,”WWF-UK 老虎高级项目顾问 Becci May 说。
这是我的代码:
library(readtext)
library(stringr)
#' folder where you've saved your articles
path <- "articles"
#' reads in anything saved as .docx
mydata <-
readtext(paste0(path, "\\*.docx")) #' make sure the Word document is saved as .docx
#' remove curly punctuation
mydata$text <- gsub("/’", "/'", mydata$text, ignore.case = TRUE)
mydata$text <- gsub("[“”]", "\"", gsub("[‘’]", "'", mydata$text))
#' extract the quotes
stringi::stri_extract_all_regex(str = mydata$text, pattern = '(?<=").*?(?=")')
输出是:
[[1]] [1] “我们找到了他,他很健康,”
[2] “休斯顿警察局 (HPD) 重犯指挥官罗恩·博尔扎说。他接着说,” [3] “我喜欢老虎”
[[2]] [1] “目标促成了更大规模的保护行动,这是迫切需要的,”
您可以看到第一个输出的第二个元素不正确。我不想包括
” 休斯顿警察局 (HPD) 重犯指挥官罗恩·博尔扎说。他接着说,“
解决方案
我们可以做到这一点base R
sapply(regmatches(text, gregexpr('(?<=")[^"]+)', text, perl = TRUE)), function(x) x[c(TRUE, FALSE)])
推荐阅读
- c# - 在 LINQ 查询中获取格式化的可为空日期字符串
- sql - SQL Server:如何编写正确的查询?
- fortran - 除非我打印它,否则编译器不会计算变量""
- c# - 项目本身要打包时,项目的 NuGet 依赖如何打包?
- javascript - 解析vue组件中的输入属性
- android-studio - Android Studio Markdown 支持插件预览偏好在哪里?
- julia - 如何列出安装在 Julia 的微分方程中的所有插值算法?
- node.js - 在 Linux (Ubuntu) 服务器中保护 node.js exec 命令行
- flutter - StreamBuilder 仅接收来自流的最后一项
- c++ - 查找导致依赖的目标文件