Как преобразовать сложный текстовый документ в односимвольную строку - PullRequest
0 голосов
/ 14 марта 2020

У меня есть рукопись, и я хотел бы извлечь из нее все цитаты с помощью регулярных выражений. Работая над тестовым образцом из рукописи, я разработал регулярное выражение - см. Здесь: Регулярное выражение в R: Как извлечь цитаты из рукописи . Он работает безошибочно на образце, называемом samp:

str_extract_all(samp, "\\([A-Za-z][^)]*\\d{4};|;\\s[A-Za-z][^)]*\\d{4}\\)|\\([A-Za-z][^)]*\\d{4}.*?\\)|\\b[A-Z][a-z].*\\([^A-Za-z)]\\w.*?\\)|\\b[A-Z][a-z].*\\(forthcoming\\)|\\b[A-Z][a-z].*\\(in preparation\\)|\\([A-Za-z][^);]*\\d{4}|(?<=;\\s)[A-Za-z][^);]*\\d{4}")

НО: регулярное выражение плохо работает с реальной рукописью (которая, очевидно, больше и может иметь более сложную внутреннюю структуру, чем образец) потому что, в отличие от примера, я не могу преобразовать рукопись в одну связную символьную строку.

Я попытался прочитать документ таким образом:

read.table([my path], header = F,  sep = "\n", fill = F, stringsAsFactors = F, strip.white = T)

, и я использовал paste, чтобы объединить все вместе:

paste0(manuscript$V1, collapse = "")

, но у получающегося объекта все еще есть внутренние деления, которые не позволяют регулярному выражению беспрепятственно работать со всем документом.

Так, как рукопись может быть считывание или последующая обработка таким образом, что он составляет одну непрерывную строку символов ?

Помощь с этим вопросом очень ценится.

1 Ответ

1 голос
/ 14 марта 2020

Мы можем использовать readLines, чтобы получить содержимое файла в виде списка строк, которые мы, в свою очередь, сворачиваем в единую непрерывную строку.

manuscript <- paste0(readLines(path_to_file), collapse= "")

В зависимости от содержимого файла мы хотели бы выполнить некоторую предварительную обработку перед извлечением информации. Но это должно получить нам строку в форме, как показано в примере в вопросе, который вы указали в сообщении.

...