如何在R中读取含换页符(\f)的文本文件并按分页生成数据框
解决R中按PDF换页符(\f)拆分文本生成数据框的问题
单个文件处理方案
直接读取完整文件内容,合并所有行后按换页符拆分,再转成数据框:
# 替换为你的目标文件路径 file_path <- "your_file.txt" # 读取文件所有行,合并为单个字符串(保留普通换行,消除其拆分影响) full_content <- paste(readLines(file_path, warn = FALSE), collapse = "\n") # 按换页符\f拆分内容,得到每一页的文本 page_list <- strsplit(full_content, split = "\\f")[[1]] # 转换为数据框,每行对应PDF的一页 page_df <- data.frame(page_content = page_list, stringsAsFactors = FALSE)
批量处理文件夹中所有txt文件
如果要处理文件夹下的多个txt文件,可以用批量处理函数:
# 替换为你的文件夹路径 folder_path <- "your_folder_path" # 获取文件夹内所有txt文件的完整路径 txt_files <- list.files(path = folder_path, pattern = "\\.txt$", full.names = TRUE) # 定义处理单个文件的函数 process_single_file <- function(path) { content <- paste(readLines(path, warn = FALSE), collapse = "\n") pages <- strsplit(content, split = "\\f")[[1]] # 返回包含文件名和页内容的数据框,方便溯源 data.frame( source_file = basename(path), page_content = pages, stringsAsFactors = FALSE ) } # 批量处理所有文件并合并结果 all_pages_df <- do.call(rbind, lapply(txt_files, process_single_file))
关键说明
readLines(..., warn = FALSE):读取文件所有行,关闭编码相关警告(如果遇到编码问题,可以指定encoding参数,比如encoding = "UTF-8")paste(..., collapse = "\n"):把普通换行保留在文本内容中,但不会将其作为行分隔符,确保只有换页符才会拆分内容strsplit(..., split = "\\f"):\f是正则表达式中的特殊字符,需要用双反斜杠转义,这样才能准确匹配换页符完成拆分
内容的提问来源于stack exchange,提问作者gosling3
相关产品推荐
相关产品推荐

