Home > OS >  Exctract a value from a Json file(python)
Exctract a value from a Json file(python)

Time:04-28

Hi i'm not an expert and this problem kept me stuck for such a long time I hope that someone here can help me i would like to exctract the value "interestExpense" from the following json file:

{'incomeBeforeTax': 17780000000, 
'minorityInterest': 103000000, 
'netIncome': 17937000000, 
'sellingGeneralAdministrative': 5918000000, 
'grossProfit': 16507000000, 
'ebit': 10589000000, 
'endDate': 1640908800, 
'operatingIncome': 10589000000, 
'interestExpense': -1803000000, 
'incomeTaxExpense': -130000000, 
'totalRevenue': 136341000000, 
'totalOperatingExpenses': 125752000000, 
'costOfRevenue': 119834000000, 
'totalOtherIncomeExpenseNet': 7191000000, 
'netIncomeFromContinuingOps': 17910000000, 
'netIncomeApplicableToCommonShares': 17937000000}

In this case the result should be -130000000 as a string but i m trying to find a way to create an list(or an array) with all those floats so that i can decide which one to pick, i have no idea how to manipulate this kind of data(json) For example

print(list[0])

should return 17780000000(the value associated with incomeBeforeTax) is this actually possible? The output is generated from this code:

annual_is_stms=[]
url_financials ='https://finance.yahoo.com/quote/{}/financials?p{}'
stock= 'F'

response = requests.get(url_financials.format(stock,stock),headers=headers)
soup = BeautifulSoup(response.text,'html.parser')
pattern = re.compile(r'\s--\sData\s--\s')
script_data = soup.find('script',text=pattern).contents[0]

script_data[:500]

script_data[-500:]

start = script_data.find("context")-2
json_data =json.loads(script_data[start:-12])
json_data['context']['dispatcher']['stores']['QuoteSummaryStore'].keys()

#all data relative financials

annual_is=json_data['context']['dispatcher']['stores']['QuoteSummaryStore']['incomeStatementHistory']['incomeStatementHistory']
for s in annual_is:
    statement = {}
    for key, val in s.items():
        try:
            statement[key] = val['raw']
        except TypeError:
            continue
        except KeyError:
            continue
    annual_is_stms.append(statement)
print(annual_is_stms[0])

CodePudding user response:

If you are using python, you need to include the json module and parse it as an object:

import json

# some JSON:
x =  '{ "name":"John", "age":30, "city":"New York"}'

# parse x:
y = json.loads(x)

# the result is a Python dictionary:
print(y["age"])

Regards

L.

CodePudding user response:

Copy and paste this into Python.

data = {'incomeBeforeTax': 17780000000, 
'minorityInterest': 103000000, 
'netIncome': 17937000000, 
'sellingGeneralAdministrative': 5918000000, 
'grossProfit': 16507000000, 
'ebit': 10589000000, 
'endDate': 1640908800, 
'operatingIncome': 10589000000, 
'interestExpense': -1803000000, 
'incomeTaxExpense': -130000000, 
'totalRevenue': 136341000000, 
'totalOperatingExpenses': 125752000000, 
'costOfRevenue': 119834000000, 
'totalOtherIncomeExpenseNet': 7191000000, 
'netIncomeFromContinuingOps': 17910000000, 
'netIncomeApplicableToCommonShares': 17937000000}

print(data['interestExpense'])
  • Related