文本型数据

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的自解压文件,并(在程序运行中临时)将其加入环境变量,然后执行如下代码:
    1. #本文件夹下所有doc转docx,并输出至子文件夹fgh
    2. #*.doc也可以换成具体的比如abc.doc,但是没有实用价值
    3. #--headless 表示不启动GUI
    4. 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函数