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

如何在R中从结构化文本文件提取信息生成DataFrame

在R中提取固定结构文本为DataFrame的方案

核心思路

借助R的文本处理工具读取文件,通过正则匹配提取目标字段,最后将批量处理结果整合成DataFrame。以下是针对固定结构文本的具体实现步骤:

具体操作步骤

1. 安装并加载依赖包

install.packages(c("stringr", "dplyr"))
library(stringr)
library(dplyr)

2. 读取目标文本文件

假设你的文本文件名为entries.txt,先读取所有内容并合并为单个字符串:

text_content <- paste(readLines("entries.txt"), collapse = "\n")

3. 分割独立条目

假设条目之间以空行作为分隔(如果是其他分隔符,替换正则表达式即可),将文本拆分为单个条目:

entries <- str_split(text_content, "\\n\\s*\\n")[[1]]
entries <- entries[entries != ""] # 过滤空条目

4. 定义字段提取函数

编写函数处理单个条目,精准提取6个目标字段:

extract_fields <- function(entry) {
  title <- str_extract(entry, "标题:\\s*(.*)") %>% str_remove("标题:\\s*")
  book_count <- str_extract(entry, "书籍数量:\\s*(\\d+)") %>% str_remove("书籍数量:\\s*") %>% as.numeric()
  country <- str_extract(entry, "国家:\\s*(.*)") %>% str_remove("国家:\\s*")
  date <- str_extract(entry, "日期:\\s*(.*)") %>% str_remove("日期:\\s*")
  time <- str_extract(entry, "时间:\\s*(.*)") %>% str_remove("时间:\\s*")
  author <- str_extract(entry, "作者:\\s*(.*)") %>% str_remove("作者:\\s*")
  
  data.frame(
    标题 = title,
    书籍数量 = book_count,
    国家 = country,
    日期 = date,
    时间 = time,
    作者 = author,
    stringsAsFactors = FALSE
  )
}

5. 批量处理生成DataFrame

遍历所有条目并合并结果:

result_df <- bind_rows(lapply(entries, extract_fields))

适配调整提示

  • 如果文本中的字段标记(如标题:)是其他格式,直接修改正则表达式中的匹配前缀即可。
  • 若存在字段缺失,提取结果会显示NA,可使用tidyr::replace_na()填充默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:01:43