Как напечатать неизвестный набор переменных в столбцы со строками заголовков на основе других переменных - PullRequest
0 голосов
/ 22 апреля 2020

Я построил небольшую программу, которая просматривает цены акций из финансов Yahoo для тикеров, которые я ввожу. Вы можете ввести столько тикеров, сколько хотите. Его работы ОТЛИЧНЫЕ !!!! - Для извлечения и печати данных. Тем не менее, печать продолжает печатать тикер и затем курс акций. Он будет продолжать извлекать данные о запасах (с учетом счетчика, который я встроил), но также печатать тикер. Я хотел бы, чтобы вывод на печать был более в столбчатой ​​форме - с тикерами в верхней части, а затем просто с ценами на акции под правильным тикером и т. Д. c.

. Я бы хотел, чтобы он распечатал что-то как:

     GOOG        AMZN           FB   $1,263.64   $2,371.55      $182.74
$1,263.61   $2,370.51      $182.65   $1,262.98   $2,371.52      $182.71

Но это печатает:

GOOG  $1,263.64  FB   $182.74 AMZN  $2,371.55 GOOG  $1,263.64  FB  
$182.76 AMZN  $2,371.55 GOOG  $1,263.64  FB   $182.74 AMZN  $2,371.55
import bs4
import requests
from bs4 import BeautifulSoup
import time

tickers = []
price_list = []
name = None
pull_count = 0

while name != "":
    name = input('Enter a ticker (enter"") to end: ')
    if name != "":
        tickers.append(name)

# print(tickers)

while pull_count < 3:
    pull_count += 1
    for ticker in tickers:
        url = "https://finance.yahoo.com/quote/" + ticker
        response = requests.get(url)
        soup = BeautifulSoup(response.text, "lxml")
        price = (
            soup.find_all("div", {"class": "My(6px) Pos(r) smartphone_Mt(6px)"})[0]
            .find("span")
            .text
        )
        price = price.replace(",", "")
        price = float(price)  # converts these to numbers
        print(
            "{:^5}".format(ticker)
        )  # print("{:^5}".format(ticker), "      ", ("{:^5}".format(ticker2)))
        print("${:4,.2f}".format(price))

print("PROGRAM ENDED")

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете использовать пакет под названием yahooquery . Попробуйте следующее:

from yahooquery import Ticker

symbols = ['aapl', 'msft', 'fb', 'goog', 'amzn']
t = Ticker(symbols)

data = t.price
prices = [data[symbol]['regularMarketPrice'] for symbol in symbols]

df = pd.DataFrame(prices).T
df.columns = symbols

А вот вывод:

     aapl    msft      fb     goog     amzn
0  275.03  171.42  185.13  1276.31  2399.45
...