如何在R语言中提取ODT文件文本?解决read_odt()单词合并问题
解决textreadr::read_odt()提取ODT文本时单词无空格的问题
方法1:正则表达式修复拼接文本
如果提取后的文本是英文单词因大小写拼接在一起(比如HelloWorld),可以用正则在大写字母前插入空格:
library(textreadr) # 读取ODT文本 raw_text <- read_odt("your_target_file.odt") # 用正则修复空格:小写字母后接大写字母时,在大写字母前加空格 fixed_text <- gsub("(?<=[a-z])([A-Z])", " \\1", raw_text, perl = TRUE)
这个方法适合绝大多数英文文本的情况,简单高效。
方法2:换用officer包读取ODT
officer包对ODT文档的结构解析更严谨,能保留原始文本的空格和排版逻辑:
library(officer) # 读取ODT文档 odt_doc <- read_odt("your_target_file.odt") # 提取整理后的文本 fixed_text <- docx_summary(odt_doc)$text
如果你的ODT包含表格、分栏等复杂格式,这个方法的适配性更好。
方法3:直接解析ODT的XML结构(进阶)
ODT本质是压缩的XML文件,你可以直接解析核心内容文件来精确控制文本提取:
library(xml2) # 临时解压ODT文件 unzip("your_target_file.odt", exdir = tempdir()) # 读取ODT的核心内容XML content_xml <- read_xml(file.path(tempdir(), "content.xml")) # 提取所有文本节点并拼接(自动保留空格) text_elements <- xml_find_all(content_xml, "//text:t") fixed_text <- paste(xml_text(text_elements), collapse = " ")
这个方法适合极端复杂的ODT文档,能完全自定义提取逻辑。
内容的提问来源于stack exchange,提问作者SEAnalyst
相关产品推荐
相关产品推荐

