文本型数据
csv、json、xml
用python处理都很容易,推荐[pandas.read_csv()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html)
、[orjson](https://github.com/ijl/orjson)
、[lxml](https://lxml.de/api/index.html)
txt
Excel文件
见本项目Excel文件
特种软件生成的数据
tdms
tdms是labelVIEW导出的曲线格式文件。虽然labelVIEW本身是商业闭源软件,但tdms格式的解析算法是公开的,可以找到一些库来解析。
python有nptdms库可以解析,教程待完善,可参考nptdms官网教程。
doc
注意事项
doc文档的读取比较麻烦,在可能的情况下,尽量要求数据源的提供方给其他格式
先转换为docx
有两种办法:
- 用(python的)win32api调用word程序,调用类似VBA的代码读取文件数据。此方法要求程序在Windows系统上使用,且系统上装有Word。另外,此方法速度很慢且对系统资源有较大占用,约4~5秒才能完成一次对1~3页的文档的读取操作,不推荐。
- 调用绿色(portable)版libreoffice的命令行工具,在清华大学镜像站下载portable版libreoffice的自解压文件,并(在程序运行中临时)将其加入环境变量,然后执行如下代码:
#本文件夹下所有doc转docx,并输出至子文件夹fgh
#*.doc也可以换成具体的比如abc.doc,但是没有实用价值
#--headless 表示不启动GUI
LibreOfficePortable --headless --convert-to docx --outdir ./fgh *.doc
用aspose.word读取
aspose.word官网
aspose.word是一个面向企业的支持读取doc/docx/pdf
文档的组件,可以让Windows和linux设备在未安装office系列软件的情况下解析doc文件。其支持语言有C++ / Java / .Net / Python_via_.Net
。免费版对单文件大小有限制(大约100页),且无论是读取还是写入文件,都会生成水印,不过水印对于读取数据而言影响不大。总体而言,免费版足够一般使用,免费版与付费版的详细区别见官网付费政策说明。
官网主要教程及其子页面有详细的针对python的教程。若需在python中安装,则只需pip install aspose-words
,这个库没有任何其他依赖项,无需在虚拟环境中安装。
后续会添加一些例子来说明用法。docx
用python-docx读取
python-docx库官网用aspose.word读取
对于原始数据是doc和docx混搭,或使用Java及.Net语言,抑或用python但是不想多学一个库的情况,不如也用aspose.word读取docx文件。PDF
办法有不少,但都不太简单,待整理
主要推荐pymupdf的extract_text函数