我正在研究 python,我想读取一个 *.ods 文件并将其转换为 python 字典。
键将是第一列值,值将是第二列值。
我该怎么做?我使用过xlrd
,但它不读取 *.ods 文件。
一些可用的选项:
pyexcel-ods:“一个以 ods 格式读取、操作和写入数据的包装库。 ”可以通过以下方式安装:pip install pyexcel-ods
. 我个人推荐这个软件包,因为我已经使用过它并且正在积极维护它。
py-odftools:“ ...用于分析、转换和创建 ISO 标准 OpenDocument 格式文件的工具集合。 ”该项目自 2007 年底以来没有更新。它看起来已被废弃。
ezodf:“用于创建/操作 OpenDocumentFormat 文件的 Python 包。 ”可通过pip install ezodf
. 有关此软件包的严重问题,请参阅下面的评论中的警告。
尽管您可以要求您的用户文件>另存为(您可能知道),但这在您的情况下可能没有用。
使用 libre/openoffice 服务可能更容易。它可以在服务器上完全无头运行,无需安装或运行 X11,这将为您提供干净的本机转换。
libreoffice --without-x --convert-to csv filename.ods
查看 libreoffice --help(或 openoffice --help)了解详细信息。这也可以包含在 os.system()、subprocess.*() 等中(注意:在 Windows 上使用 -convert-to。)另外请注意:您不能已经在运行任何Libre/Open/Star office 实例,包括快速入门。
更新:LibreOffice 的早期版本使用 --headless 而不是 --without-x。
您可以先将 .ODS 转换为 csv 吗?然后使用csv模块使用 Python 解析 CSV 非常简单。
检查py-odftools。
下面链接中的这种方法非常适合我将 *.ods 文件读取/加载到 python 数据帧中。您可以选择按
sheet index
或按
加载sheet name
。
从这个项目中窥视我的解决方案: https ://pypi.org/project/pandas-ods-reader/
您可能首先需要安装这些依赖项:ezodf,lxml
并且pandas
在继续之前。
pip install pandas_ods_reader
from pandas_ods_reader import read_ods
然后:
filepath = "path/to/your/file.ods"
根据索引加载工作表(基于索引 1)
sheet_idx = 1
df = read_ods(filepath, sheet_idx)
根据工作表名称加载工作表
sheet_name = "sales_year_1"
df = read_ods(filepath, sheet_name)
完毕。
Linux Journal 上有一篇很棒的文章如何在 python 中阅读 ods。Ods 文件是一个包含 xml 文件的 juz zip 文件。您可以解析 xml 文件来读取所有单元格。