python - 使用python读取xbrl

标签 python xbrl

我正在尝试在 xbrl 文件中查找特定标记。我最初尝试使用 python-xbrl 包,但这并不完全是我想要的,所以我的代码基于该包中可用的代码。

这是我感兴趣的xbrl部分

<us-gaap:LiabilitiesCurrent contextRef="eol_PE2035----1510-Q0008_STD_0_20150627_0" unitRef="iso4217_USD" decimals="-6" id="id_5025426_6FEF05CB-B19C-4D84-AAF1-79B431731049_1_24">65285000000</us-gaap:LiabilitiesCurrent>
<us-gaap:Liabilities contextRef="eol_PE2035----1510-Q0008_STD_0_20150627_0" unitRef="iso4217_USD" decimals="-6" id="id_5025426_6FEF05CB-B19C-4D84-AAF1-79B431731049_1_28">147474000000</us-gaap:Liabilities>

这是代码

python-xbrl 软件包基于 beautifulsoup4 和其他几个软件包。

liabilities = xbrl.find_all(name=re.compile("(us-gaap:Liabilities)",
                          re.IGNORECASE | re.MULTILINE))

我获得了 us-gaap:LiabilityCurrent 的值,但我想要 us-gaap:Liability 的值。 现在,一旦找到匹配项,就会存储它。但在很多情况下,由于 xbrl 中的标签格式,它的匹配是错误的。我相信我需要更改 re.compile() 部分才能使其正常工作。

最佳答案

对于使用这种方法来解析 XBRL(或者实际上是任何包含命名空间的 XML),我会非常谨慎。 “us-gaap:负债”是一个 QName,由前缀(“us-gaap”)和本地名称(“负债”)组成。前缀只是完整命名空间 URI 的简写,例如“http://fasb.org/us-gaap/2015-01-31 ”,它由命名空间声明定义,通常位于文档顶部。如果您查看文档顶部,您会看到类似以下内容:

xmlns:us-gaap="http://fasb.org/us-gaap/2015-01-31"

这意味着在本文档的范围内,“us-gaap”被视为完整命名空间 URI。

XML 创建者可以自由使用他们想要的任何前缀,因此不能保证该元素在您遇到的所有文档中实际上都被称为“us-gaap:Liability”。

beautifulsoup4 对命名空间的支持非常有限,因此我不建议将其作为构建 XBRL 处理器的起点。 Arelle 项目可能值得一看,它是一个完整的 XBRL 处理器,并且可以更轻松地执行其他任务,例如查找与分类中的事实相关的标签和其他信息。

关于python - 使用python读取xbrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33903843/

相关文章:

tags - 如何获取xbrl标签与财务报表中显示名称的映射关系?

java - XBRL:如何合并不同文件中的行?

python - Arelle 使用 Python 自动化将数据传输到 Excel 的小程序

xml - XBRL 商业事实的名称数量

python - 添加本身就是字典的字典项

python - 将150个CSV导入一个数据源

python - 无法在 Django Rest Framework View 集中的模型方法中显示带注释的查询集

python - 合并两个 TRUE/FALSE 数据框列仅保持 TRUE

python - SQLalchemy python3 s = select([用户]) Namerror : name 'users' is not defined