首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python读取xbrl

用python读取xbrl
EN

Stack Overflow用户
提问于 2015-11-24 21:09:06
回答 2查看 3.2K关注 0票数 2

我试图在xbrl文件中找到特定的标记。我最初尝试使用python包,但这并不完全是我想要的,所以我根据包中可用的代码编写代码。

这是我感兴趣的xbrl的一部分

代码语言:javascript
复制
<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和其他几个包。

代码语言:javascript
复制
liabilities = xbrl.find_all(name=re.compile("(us-gaap:Liabilities)",
                          re.IGNORECASE | re.MULTILINE))

我得到了us-gaap:LiabilitiesCurrent的值,但是我想要us-gaap:Liabilities的值。现在,一旦找到匹配的,就把它储存起来。但在许多情况下,由于xbrl中的标记格式,这是错误的匹配。我认为我需要更改re.compile()部件,使其正常工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-24 21:14:06

试着在结尾处加上一个$美元符号,以表明与美元符号后面的任何其他符号不匹配:

代码语言:javascript
复制
liabilities = xbrl.find_all(name=re.compile("(us-gaap:Liabilities$)",
                          re.IGNORECASE | re.MULTILINE))
票数 1
EN

Stack Overflow用户

发布于 2015-11-27 09:43:20

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

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

这意味着在本文档的范围内,“us”被理解为是指完整的命名空间URI。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33903843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档