Search code examples
pythonxbrl

Reading xbrl with python


I am trying find particular tag in an xbrl file. I originally tried using python-xbrl package, but it is not exactly what I want, so I based my code on the one available from the package.

Here's the part of xbrl that I am interested in

<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>

Here is the code

python-xbrl package is based on beautifulsoup4 and several other packages.

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

I get the value for us-gaap:LiabilitiesCurrent, but I want value for us-gaap:Liabilities. Right now as soon as it finds a match it, stores it. But in many cases its the wrong match due to the tag format in xbrl. I believe I need to change re.compile() part to make it work correctly.


Solution

  • Try it with a $ dollar sign at the end to indicate not to match anything else following the dollar sign:

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