使用python分析XBRL

2024-06-09 21:52:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析xbrl中的值。我的代码基于python xbrl包,但为了满足我的需要,我做了一些修改。包使用beautifulsoup4

我正在使用下面的代码来找到一个我感兴趣的值。我使用if语句是因为不同的公司对同一件事情使用不同的标记名。

例如,AAPL使用us-gaap:CostOfGoodsAndServicesSold,ADBE使用us-gaap:CostOfRevenue

此代码按预期工作,给出了正确的值299240000

    #COST_GOOD_SOLD
    COST_GOOD_SOLD = xbrl.find_all(name=re.compile("(us-gaap:CostOfGoodsAndServicesSold$)",
                                                   re.IGNORECASE | re.MULTILINE))
    gaap_obj.COST_GOOD_SOLD = self.data_processing(COST_GOOD_SOLD, xbrl, ignore_errors,
                                                   logger, context_ids)
    if gaap_obj.COST_GOOD_SOLD ==0 or gaap_obj.COST_GOOD_SOLD==None:
        COST_GOOD_SOLD = xbrl.find_all(name=re.compile("(us-gaap:CostOfRevenue$)",
                                                           re.IGNORECASE | re.MULTILINE))
        gaap_obj.COST_GOOD_SOLD = self.data_processing(COST_GOOD_SOLD, xbrl, ignore_errors,
                                                       logger, context_ids)

XBRL公司

<us-gaap:CostOfGoodsAndServicesSold contextRef="eol_PE2035----1510-Q0008_STD_91_20150627_0" unitRef="iso4217_USD" decimals="-6" id="id_5025426_2D2AD7F5-3575-48A0-9F08-7F1EBE173C23_1_1">29924000000</us-gaap:CostOfGoodsAndServicesSold>

这个代码返回零,而我想要-1808000000

    #NET_CURR_DEBT
    NET_CURR_DEBT = xbrl.find_all(name = re.compile("(us-gaap:ProceedsFromRepaymentsOfCommercialPaper$)",
                                                    re.IGNORECASE | re.MULTILINE))
    gaap_obj.NET_CURR_DEBT = self.data_processing(NET_CURR_DEBT, xbrl, ignore_errors,
                                                  logger, context_ids)
    if NET_CURR_DEBT==0 or NET_CURR_DEBT==None:
        NET_CURR_DEBT = xbrl.find_all(name = re.compile("(us-gaap:RepaymentsOfLongTermDebtAndCapitalSecurities$)",
                                                        re.IGNORECASE | re.MULTILINE))
        gaap_obj.NET_CURR_DEBT = self.data_processing(NET_CURR_DEBT, xbrl, ignore_errors,
                                                      logger, context_ids)

XBRL公司

<us-gaap:ProceedsFromRepaymentsOfCommercialPaper contextRef="eol_PE2035----1510-Q0008_STD_273_20150627_0" unitRef="iso4217_USD" decimals="-6" id="id_5025426_049B4F11-216C-4D4B-A41F-32F1F55F967F_1_32">-1808000000</us-gaap:ProceedsFromRepaymentsOfCommercialPaper>

我还有其他几个正在解析的值,但它们的结构都与我附加的代码相同。 我的输出是一个数据帧,其中第一列是值名(COST_GOOD_SOLD, NET_CURR_DEBT, ect),第二列是来自XML文件的值。

我不明白为什么相同的代码块不起作用。看来我在这两种情况下都在做同样的事情。找到一个值并存储它。


Tags: 代码namereobjnetallfindus