Этот метод использует функцию stripWhitespace
из библиотеки tm
, но, кроме этого, это базовая R.
Сначала прочитайте текст и найдите строки page#:
, используя grep
.
x <- readLines('text2.txt')
page_locs <- grep('page\\d:', x)
# add an element with the last line of the text plus 1
page_locs[length(page_locs)+1] <- length(x) + 1
# strip out the whitespace
x <- stripWhitespace(x)
# break the text into a list of pages, eliminating the `page#:` lines.
pages <- list()
# grab each page's lines into successive list elements
for (i in 1:(length(page_locs)-1)) {
pages[[i]] <- x[(page_locs[i]+1):(page_locs[i+1]-1)]
}
Затем обработайте каждую страницу в виде списка абзацев для каждой страницы.
for (i in 1:length(pages)) {
# get the locations for the paragraphs
para_locs <- grep('paragraph\\d:', pages[[i]])
# add an end element
para_locs[length(para_locs) + 1] <- length(pages[[i]]) + 1
# delete the paragraph marker
curr_page <- gsub('paragraph\\d:','',pages[[i]])
curr_paras <- list()
# step through the paragraphs in each page
for (j in 1:(length(para_locs)-1)) {
# collapse the vectors for each paragraph
curr_paras[[j]] <- paste(curr_page[para_locs[j]:(para_locs[j+1]-1)], collapse='')
# delete leading spaces for each paragraph if desired
curr_paras[[j]] <- gsub('^ ','',curr_paras[[j]])
}
# store the list of paragraphs back into the pages list
pages[[i]] <- curr_paras
}
Возможно, вам потребуется дополнительная очистка в зависимости от вашего текста.