Skip to main content

基芬

项目描述

Quiffen 是一个用于解析 QIF(Quicken Interchange Format)文件的 Python 包。

该软件包允许用户读取 QIF 文件并与内容交互,还可以创建 QIF 结构,然后输出到 QIF 文件、交易数据的 CSV 或 pandas DataFrame。

QIF 是一种旧文件类型,但有其优点,因为:

  • 它是标准化的(除了日期,但可以处理)

    • 与 CSV 不同,QIF 文件都遵循相同的格式,因此当它们来自不同来源时不需要特别注意

  • 它是用纯文本写的

特征

  • 导入 QIF 文件和操作数据

  • 创建 QIF 结构(支持交易、投资、账户、类别、类、拆分)

  • 将 Qif 对象转换为多种不同的格式并导出(pandas DataFrame、CSV、QIF 文件)

用法

下面是一个解析 QIF 文件的示例:

>>> from quiffen import Qif
>>> import decimal
>>> qif = Qif.parse('test.qif', day_first=False)
>>> qif.accounts
{'Quiffen Default Account': Account(name='Quiffen Default Account', desc='The default account created by Quiffen when no
other accounts were present')}
>>> acc = qif.accounts['Quiffen Default Account']
>>> acc.transactions
{'Bank': TransactionList(Transaction(date=datetime.datetime(2021, 2, 14, 0 , 0), amount=decimal.Decimal(150.0), ...), ...),
'Invst': TransactionList(...)}
>>> tr = acc.transactions['Bank'][0]
>>> print(tr)
Transaction:
    Date: 2020-02-14 00:00:00
    Amount: 67.5
    Payee: T-Mobile
    Category: Cell Phone
    Split Categories: ['Bills']
    Splits: 2 total split(s)
>>> qif.categories
{'Bills': Category(name='Bills), expense=True, hierarchy='Bills'}
>>> bills = qif.categories['Bills']
>>> print(bills.render_tree())
Bills (root)
└─ Cell Phone
>>> df = qif.to_dataframe(data='transactions')
>>> df.head()
        date  amount           payee  ...                           memo cleared check_number
0 2020-02-14    67.5        T-Mobile  ...                            NaN     NaN          NaN
1 2020-02-14    32.0  US Post Office  ...  money back for damaged parcel     NaN          NaN
2 2020-12-02   -10.0          Target  ...        two transactions, equal     NaN          NaN
3 2020-11-02   -25.0         Walmart  ...          non split transaction       X        123.0
4 2020-10-02  -100.0      Amazon.com  ...                   test order 1       *          NaN
...

下面是创建 QIF 结构并导出到 QIF 文件的示例:

>>> import quiffen
>>> from datetime import datetime
>>> qif = quiffen.Qif()
>>> acc = quiffen.Account('Personal Bank Account', desc='My personal bank account with Barclays.')
>>> qif.add_account(acc)
>>> groceries = quiffen.Category('Groceries')
>>> essentials = quiffen.Category('Essentials')
>>> groceries.add_child(essentials)
>>> qif.add_category(groceries)
>>> tr = quiffen.Transaction(date=datetime.now(), amount=150.0)
>>> acc.add_transaction(tr, header='Bank')
>>> qif.to_qif()  # If a path is provided, this will save the file too!
'!Type:Cat\nNGroceries\nETrue\nIFalse\n^\nNGroceries:Essentials\nETrue\nIFalse\n^\n!Account\nNPersonal Bank Account\nDMy
personal bank account with Barclays.\n^\n!Type:Bank\nD02/07/2021\nT150.0\n^\n'

文档

文档可在以下位置找到:https ://quiffen.readthedocs.io/en/latest/

安装

通过运行安装 Quiffen:

>>> pip install quiffen

依赖项

  • 用于导出到 DataFrames 的pandas (可选)

    • 如果没有安装 pandas, to_dataframe()方法将无法工作。

待办事项

  • 添加对QIF 文件中存在的MemorizedTransaction对象的支持。

贡献

欢迎使用 GitHub 拉取请求,但如果您想进行重大更改,请先打开一个问题进行讨论。

支持

如果您有问题,请告诉我。

执照

该项目在 GNU GPLv3 许可下获得许可。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

quiffen-1.2.4.tar.gz (37.2 kB 查看哈希

已上传 source

内置分布

quiffen-1.2.4-py3-none-any.whl (41.3 kB 查看哈希

已上传 py3