You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用readr或data.table读取txt文件至第一个空行?

批量读取TXT文件并保留第一个空行前的内容(readr/data.table实现)

使用readr实现

思路

  1. 定位目标目录下所有.txt文件的路径;
  2. 按行读取单个文件内容;
  3. 找到第一个空行的位置,截取该位置之前的所有行;
  4. 合并截取的内容为完整文本,按需解析为R对象(仅需保留文本可跳过解析)。

代码示例

library(readr)
library(purrr)
library(stringr)

# 获取所有txt文件的完整路径
txt_paths <- list.files(pattern = "\\.txt$", full.names = TRUE)

# 定义单个文件的处理函数
process_single_txt <- function(file_path) {
  # 读取文件的每一行
  all_lines <- read_lines(file_path)
  
  # 找到第一个空行的索引(支持含空格的空行,严格空行可改用all_lines == "")
  first_empty_line <- which(str_trim(all_lines) == "")[1]
  
  # 截取需要保留的内容:若无空行则保留全部,否则取到空行前一行
  keep_content <- if (!is.na(first_empty_line)) {
    all_lines[1:(first_empty_line - 1)]
  } else {
    all_lines
  }
  
  # 合并为完整字符串
  content_str <- paste(keep_content, collapse = "\n")
  
  # 解析为R对象(不需要的话直接返回content_str即可)
  eval(parse(text = content_str))
}

# 批量处理所有文件,结果存为列表
processed_results <- map(txt_paths, process_single_txt)

使用data.table实现

思路

  1. 先获取所有.txt文件路径;
  2. 用fread()按行读取文件(设置sep = NULL实现按行读取);
  3. 定位第一个空行,截取目标内容;
  4. 合并文本并按需解析为R对象。

代码示例

library(data.table)
library(stringr)

# 获取所有txt文件的完整路径
txt_paths <- list.files(pattern = "\\.txt$", full.names = TRUE)

# 定义单个文件的处理函数
process_single_txt_dt <- function(file_path) {
  # 按行读取文件,返回含一列的data.table
  dt <- fread(file_path, sep = NULL, header = FALSE, col.names = "line_content")
  
  # 找到第一个空行的索引
  first_empty_line <- which(str_trim(dt$line_content) == "")[1]
  
  # 截取需要保留的内容
  keep_content <- if (!is.na(first_empty_line)) {
    dt$line_content[1:(first_empty_line - 1)]
  } else {
    dt$line_content
  }
  
  # 合并为完整字符串
  content_str <- paste(keep_content, collapse = "\n")
  
  # 解析为R对象(不需要则返回content_str)
  eval(parse(text = content_str))
}

# 批量处理所有文件
processed_results_dt <- lapply(txt_paths, process_single_txt_dt)

注意事项

  • 若空行是严格无任何字符的行,可将str_trim(...) == ""替换为... == "",减少处理开销;
  • 仅需保留文本内容时,直接返回content_str即可,无需执行解析步骤;
  • 处理超大量文件时,data.table的fread()在读取速度上会有明显优势。

内容的提问来源于stack exchange,提问作者Wilson Souza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:01:20