基芬
项目描述
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
查看哈希)
内置分布
quiffen-1.2.4-py3-none-any.whl
(41.3 kB
查看哈希)