Извлечение строк из PDF с помощью R - PullRequest
0 голосов
/ 21 января 2020

У меня есть этот файл PDF из Европейского парламента, который вы можете скачать здесь . Я скачал его и поместил в R. Он содержит списки имен членов Европейского парламента (MEP) после сессии голосования.

Я хочу извлечь только кусочки этих списков. В частности, я хочу извлечь и поместить в таблицу имена, расположенные между "AVGIVNA RÖSTER" и 0, , см. Текст, выделенный на этом снимке экрана .

Подобные серии имен повторяются в PDF. Это относится к конкретным c голосам. Я хочу, чтобы они все были в столе. Имена MEP меняются, но структура остается, они всегда расположены между битами "AVGIVNA RÖSTER" и «0».

Я думал об использовании функции startswith и a для l oop ", но я борюсь с надписью.

Вот что я сделал до сих пор:

library(pdftools)
library(tidyverse)

votetext <- pdftools::pdf_text("MEP.pdf") %>%
  readr::read_lines()

1 Ответ

1 голос
/ 21 января 2020

Вы можете попробовать что-то вроде этого

votetext <- pdftools::pdf_text("MEP.pdf") %>%
  readr::read_lines()

a <- which(grepl("AVGIVNA RÖSTER", votetext)) #beginning of string
b <- which(grepl("^\\s*0\\s*$", votetext)) #end of string

sapply(a, function(x){paste(votetext[x:(min(b[b > x]))], collapse = ". ")})

Обратите внимание, что в определении b я использую \\s*, чтобы найти пробел в строке. В общем, вы могли бы сначала удалить конечный и начальный пробел, см. этот вопрос .

В вашем случае вы можете сделать:

votetext2 <- pdftools::pdf_text("data.pdf") %>%
  readr::read_lines() %>%
  str_remove("^\\s*") %>% #remove white space in the begining
  str_remove("\\s*$") %>% #remove white space in the end
  str_replace_all("\\s+", " ") #replace multiple white-spaces with a singe white-space

a2 <- which(votetext2 == "AVGIVNA RÖSTER")
b2 <- which(votetext2 == "0")

result <- sapply(a2, function(x){paste(votetext2[x:(min(b2[b2 > x]))], collapse = ". ")})

result, затем выглядит это:

`"AVGIVNA RÖSTER. Martin Hojsík, Naomi Long, Margarida Marques, Pedro Marques, Manu Pineda, Ramona Strugariu, Marie Toussaint,. + Dragoş Tudorache, Marie-Pierre Vedrenne. -. Agnès Evren. 0" 
...