簡體   English   中英

電子表格到 python 字典的轉換

[英]spreadsheet to python dictionary conversion

我正在研究 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,lxmlpandas

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 文件來讀取所有單元格。

http://www.linuxjournal.com/article/9347?page=0,2

使用Odio ,您可以:

import odio

with open('test.ods', 'rb') as f:
    sheet = odio.parse_spreadsheet(f)

table = sheet.tables[0]
print(table.name)

for row in table.rows:
    print(row)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM