我正在寻找从 xbrl 文件计算总资产和总负债的方法。有什么办法可以使用编程语言来做到这一点。我尝试了 arelle 和一些解析器,它们只解析,我还创建了自己的解析器。谢谢。
我尝试过 arelle、xbrl 解析器并创建了我自己的解析器。我现在想要一种方法来计算英国 xbrl 文件的总资产和总负债。
以下是使用 Python 计算 XBRL 文件中的总资产和总负债的方法:
from arelle import Cntlr, ModelManager, ViewFileTests, XbrlConst
import arelle.Model as Model
# 加载 XBRL 文件
cntlr = Cntlr.Cntlr()
model_manager = ModelManager.initialize(cntlr)
model_xbrl = model_manager.load("path/to/your/file.xbrl")
# 定义总资产和总负债的概念
total_assets_concept = model_xbrl.factsByLocalName["Assets"]
total_liabilities_concept = model_xbrl.factsByLocalName["Liabilities"]
# 获取总资产和总负债的值
total_assets = None
total_liabilities = None
for fact in total_assets_concept:
# 确保只获取持续经营期间的值
if fact.context is not None and fact.context.hasSegment is False and fact.isInstant is False:
total_assets = fact.xValue
break
for fact in total_liabilities_concept:
if fact.context is not None and fact.context.hasSegment is False and fact.isInstant is False:
total_liabilities = fact.xValue
break
# 打印结果
print(f"总资产:{total_assets}")
print(f"总负债:{total_liabilities}")
代码解释:
-
导入必要的库:
导入
arelle
库以处理 XBRL 文件。 -
加载 XBRL 文件:
使用
arelle
的Cntlr
和ModelManager
类加载 XBRL 文件。 -
定义总资产和总负债的概念:
通过其本地名称(
Assets
和Liabilities
)定义 XBRL 文件中的总资产和总负债的概念。 -
获取总资产和总负债的值:
循环遍历与这些概念关联的事实,并检查事实的上下文以确保:
- 上下文不是空的(这意味着该值已报告)。
- 上下文没有分段(这意味着它是总值,而不是子值)。
- 事实不是即时的(这意味着它表示一段时间的结束余额,而不是特定日期的余额)。
- 打印结果: 打印提取的总资产和总负债的值。
注意:
- 此代码假定的 XBRL 文件使用 “Assets” 和 “Liabilities” 作为总资产和总负债的概念的本地名称。如果的 XBRL 文件使用不同的名称,则需要相应地更改代码。
- 此代码查找持续经营期间报告的值。如果需要查找特定日期或不同上下文的值,则需要调整代码以查找适当的上下文。
此示例演示了如何使用
arelle
库从 XBRL 文件中提取总资产和总负债。可以扩展此代码以提取其他财务数据并执行更复杂的计算。