将 R 中突出显示的文本从 docx 提取到 excel

问题描述 投票:0回答:1

有没有办法将 Word docx 中标题下突出显示的文本子集提取到 R 中的数据帧?

我有一组word文档,其标题为PID、X和Y,在PID下有一个6个字符的标识符,在X下有一系列单词,其中一些突出显示,在Y下有不同的系列一些单词突出显示。仅需要提取突出显示的单词。

生成的 Excel 应该有 PID、X、Y 作为列。每个 PID 应该在 X 和 Y 中具有来自同一文档的相应值。任何想法表示赞赏!

Word 文档示例:

enter image description here

|PID | X |是 |AD9212|米饭、面包|红色

我尝试了 docx_summary 但没有提取格式信息。

r excel extract
1个回答
0
投票

正如 @guasi 所建议的,您可以通过 HTML 采取路线(将文档另存为

.htm
)。这样,突出显示的部分将包含在
<span mso-highlight=...>
标签中,您可以使用这些标签,例如使用 CSS 选择器通过 {rvest} 进行收获,如下所示:

library(rvest)

paras <- read_html('text.htm') |>
  ## get word paragraphs via CSS selectors:
             html_nodes('body p') |>
  ## remove empty paras:
  Filter(f = \(para) html_text(para) != '')

## get PID from para following para containing 'PID':
PID  <- paras[grep('PID', paras) + 1] |>
  html_text() 

## get highlighted items:
highlights <- 
    paras[grep('X|Y', paras) + 1] |>
    Map(f = \(para) para |>
                  html_nodes('[style*=mso-highlight]') |>
                  html_text() |>
                  paste(collapse = ', ')
             )

## name and convert to data frame:
c(PID, highlights) |>
  setNames(nm = c('PID', 'X', 'Y')) |>
  list2DF()
     PID           X   Y
1 AD9212 rice, bread red
© www.soinside.com 2019 - 2024. All rights reserved.