【Tidyverse优雅编程】:批量word文档转Excel,吊打Python可还行?

问题来自头条文章:

www.toutiao.com/article/7170606479974646284/?log_from=5f6d1680db622_1669688728187

他们总说,R 语言处理文本数据、自动化办公不行,是真不行吗?本篇就来个 吊打 Python 看看。

1 问题描述

  • 有多个 word 文档:

  • 文档内容:

  • 需求:

批量读取 word 文档内容,按名目:序号、方名、组成、用法、主治、备注,整理成 Excel 表格,结果如下:

注:若未包含【组成】【用法】【主治】,则内容都归入备注。

2 解决问题

首先强调:文本数据处理,肯定离不开正则表达式!

  • 加载包

  • 批量读取 word 文档

得到的结果是数据框,每个文档占一行,doc_id 列是文件名,text 列是文档内容,一个文档内容整个是一个字符串。

  • 按药方切分列

此时,一个药方占一行了。

  • 解决一个药方的信息提取,写成函数

说明:都是正则表达式提取,主要用到零宽断言,根据两端标志提取中间想要的内容。为什么看着这么啰嗦呢?是因为数据是有陷阱的:不是每个药方都包含【组成】、【用法】、【主治】,所以右端需要设置为下一项或结尾标志$

测试一个看看:

没问题!(我差点被对不齐给骗了)

  • 循环迭代,批量解决问题

就是把函数 依次应用到数据的 text列,结果按行合并:

  • 写出到 Excel 文件

结果就是问题描述中的结果表(略)。

问题解决!

以上是为了给大家展示中间过程,方便大家理解。拿掉不必要的中间过程,借助管道,完整代码如下:

附录

我主张的数据编程思维:

我的R语言新书:《R语言编程—基于tidyverse》

电子抢读版已上线(人邮)异步社区,纸质版预计12月底上市:

《R语言编程:基于tidyverse》电子抢读版购买地址:

https://www.epubit.com/bookDetails?id=UB7db2c0db9f537&tabName=%E6%8A%A2%E8%AF%BB%E7%89%88&floorName=%E7%B2%BE%E9%80%89%E7%BA%B8%E4%B9%A6


资源下载: