我正在使用yahoo_fin包在Python语言中制作一个终端股票投资组合跟踪器,并使用tabulate导出表格中的数据。我的变量是单个股票报价器(在本例中为PTON、CHWY和FUBO)。有没有办法让一组变量在同一行函数代码中运行?正如您将在我的当前代码中看到的,我必须编辑函数中的每个变量才能使表正常工作。理想情况下,代码将通过同一行代码读取每个滚动条,而不是单独编辑每个集合。
这是我的第一篇文章,如果代码的格式错误,我深表歉意。谢谢。
from yahoo_fin import stock_info as si
from datetime import datetime
from tabulate import tabulate
now = datetime.now()
time = now.strftime('%I:%M:%S %p')
# tape = "PTON, CHWY, FUBO"
print(time)
tkr1 = 'PTON'
tkr2 = 'CHWY'
tkr3 = 'FUBO'
# FIGURE OUT A WAY TO HAVE EACH TICKER RUN THROUGH THE PACKAGE WITHOUT HAVING TO MAKE DIFFERENT VARIABLES
# You could have like Run #1 defined as a variable, so Run1 = [], run2 = [] etc.
#1
output1 = si.get_live_price(tkr1)
# get quote_table
quote1 = si.get_quote_table(tkr1)
# get data from quote_table:
prevclose1 = quote1.get("Previous Close")
vol1 = quote1.get("Volume")
rangeday1 = quote1.get("Day's Range")
range52_1 = quote1.get('52 Week Range')
percentchange1 = (output1/prevclose1)-1
percentage1 = "{:.2%}".format(percentchange1)
earningsdate1 = quote1.get('Earnings Date')
#2
output2 = si.get_live_price(tkr2)
# get quote_table
quote2 = si.get_quote_table(tkr2)
# get data from quote_table:
prevclose2 = quote2.get("Previous Close")
vol2 = quote2.get("Volume")
rangeday2 = quote2.get("Day's Range")
range52_2 = quote2.get('52 Week Range')
percentchange2 = (output2/prevclose2)-1
percentage2 = "{:.2%}".format(percentchange2)
earningsdate2 = quote2.get('Earnings Date')
#3
output3 = si.get_live_price(tkr3)
# get quote_table
quote3 = si.get_quote_table(tkr3)
# get data from quote_table:
prevclose3 = quote3.get("Previous Close")
vol3 = quote3.get("Volume")
rangeday3 = quote3.get("Day's Range")
range52_3 = quote3.get('52 Week Range')
percentchange3 = (output3/prevclose3)-1
percentage3 = "{:.2%}".format(percentchange3)
earningsdate3 = quote3.get('Earnings Date')
#Tabulate
data = [[tkr1, round(output1, 2), percentage1,(f'{vol1:,}'),rangeday1,range52_1,earningsdate1],
[tkr2, round(output2, 2), percentage2,(f'{vol2:,}'),rangeday2,range52_2,earningsdate2],
[tkr3, round(output3, 2), percentage3,(f'{vol3:,}'),rangeday3,range52_3,earningsdate3]]
print(tabulate(data, headers=["Ticker", "Price", "% Chg", "Volume", "Day Range", "52 Range", "Earnings"]))发布于 2020-12-30 10:31:33
只需创建一个函数:
from yahoo_fin import stock_info as si
from datetime import datetime
from tabulate import tabulate
now = datetime.now()
time = now.strftime('%I:%M:%S %p')
# tape = "PTON, CHWY, FUBO"
print(time)
tkr1 = 'PTON'
tkr2 = 'CHWY'
tkr3 = 'FUBO'
def get_ticker_run(ticker_code):
output = si.get_live_price(ticker_code)
# get quote_table
quote = si.get_quote_table(ticker_code)
# get data from quote_table:
prevclose = quote.get("Previous Close")
vol = quote.get("Volume")
rangeday = quote.get("Day's Range")
range52 = quote.get('52 Week Range')
percentchange = (output/prevclose)-1
percentage = "{:.2%}".format(percentchange)
earningsdate = quote.get('Earnings Date')
return [ticker_code, round(output, 2), percentage,(f'{vol:,}'),rangeday,range52,earningsdate]最后,使用它:
data = [
get_ticker_run(tkr1),
get_ticker_run(tkr2),
get_ticker_run(tkr3)
]
print(tabulate(data, headers=["Ticker", "Price", "% Chg", "Volume", "Day Range", "52 Range", "Earnings"]))https://stackoverflow.com/questions/65501251
复制相似问题