У меня возникают проблемы с созданием динамической таблицы для адаптации к различным результатам.
Я написал экранный очиститель, чтобы получить данные об акциях с http://finance.yahoo.com и распечатать информацию о компании. имя, его символ и текущая цена акции.
Однако вывод выглядит следующим образом:
Microsoft Corporation MSFT 29.76
Apple Inc. AAPL 396.77
SPDR S&P 500 SPY 155.25
Google Inc. GOOG 787.76
Я хочу, чтобы это выглядело как
Microsoft Corporation MSFT 29.76
Apple Inc. AAPL 396.77
SPDR S&P 500 SPY 155.25
Google Inc. GOOG 787.76
Я только вчера начал работать с Python и использую 3.3.1.
Мой текущий код выглядит следующим образом:
import re
import urllib.request
import cgi
from bs4 import BeautifulSoup
price = [0,0,0,0]
namesList = ["string1", "string2", "string3", "string4"]
stocksList = ["msft","aapl","spy","goog"]
def HTML():
i = 0
while i < len(stocksList):
htmlPull = urllib.request.urlopen("http://finance.yahoo.com/q?s="+stocksList[i]+"&ql=1")
htmlPull = htmlPull.read().decode('utf-8')
regex = '<span id="yfs_l84_'+stocksList[i]+'">(.+?)</span>'
pattern = re.compile(regex)
price[i] = re.findall(pattern,htmlPull)
htmlParse = BeautifulSoup(htmlPull)
title = htmlParse.title.contents
namesList[i] = title
i+=1
formatPrice(price)
formatStock(namesList)
formatOutput(namesList, stocksList, price)
def formatPrice(price):
k=0
while k < len(price):
cleaner = str(price[k])
cleaner = cleaner.replace("[","")
cleaner = cleaner.replace("]","")
cleaner = cleaner.replace("'","")
price[k] = float(cleaner)
k+=1
def formatStock(namesList):
k = 0
while k <len(namesList):
capital = stocksList[k]
capital = capital.upper()
cleaner = str(namesList[k])
cleaner = cleaner.replace("Summary for ", "")
cleaner = cleaner.replace(":"," ")
cleaner = cleaner.replace("- Yahoo! Finance'","")
cleaner = cleaner.replace("['","")
cleaner = cleaner.replace("]","")
cleaner = cleaner.replace(";","")
cleaner = cleaner.replace(capital, "")
namesList[k] = cleaner;
k+=1
def formatOutput(namesList, stocksList, price):
i = 0
while i < len(price):
capital = stocksList[i]
capital = capital.upper()
print(namesList[i],capital, price[i])
print("")
i+=1
HTML()
Пробовал print ({0},{1},{2}.format (namesList, capital, price[i])), различные типы вариантов {:‹16} и т. д. Кажется, это влияет только на одну строку, и я Я пытаюсь заставить его думать с точки зрения столбцов или таблиц, или, может быть, определенного пространства, которое должны заполнить текст и пробелы. Я не уверен, какое именно решение здесь, поэтому я спрашиваю вас всех :)
Как вы можете судить по моему коду, я довольно новичок в программировании, поэтому, если есть лучший способ сделать что-либо в этом коде, я был бы рад выслушать исправления, советы и предложения.