Форматирование текста в таблице на Python

У меня возникли проблемы с созданием динамической таблицы, чтобы приспособиться к различным результатам.

Я написал экранный скребок, чтобы вытащить акции из 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 

Я только начал wokring с 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} и т. Д. Похоже, что затрагивает только одну строку, а я «Я пытаюсь заставить его думать в терминах столбцов или таблицы или, может быть, определенного количества пространства, которое должно заполнить текст и пробелы. Я не уверен, что именно здесь находится, поэтому я прошу вас всех 🙂

Как вы можете сказать по моему коду, я довольно новичок в программировании, поэтому, если есть лучший способ сделать что-либо в этом коде, я был бы рад послушать исправления, советы и предложения.

One Solution collect form web for “Форматирование текста в таблице на Python”

Вы хотите установить ширину на основе самого длинного элемента в столбце.

В Python вы используете max чтобы найти самую большую часть некоторых вещей. Итак, вне цикла вы можете сделать:

 names_width = max(len(name) for name in namesList) stock_width = max(len(stock) for stock in stockList) 

Затем отформатируйте каждую строку, как вы сказали, что попробовали:

 print({0:{3}} {1:{4}} {2}.format(namesList[i], capital, price[i], names_width, stock_width)) 
  • Как очистить теги html, распространяемые по нескольким строкам в python?
  • Ускорение прекрасного
  • очистить данные с веб-сайта, которые перешли на следующую страницу при прокрутке вниз с помощью Python и BeautifulSoup
  • Python, несколько потоков, выборка веб-страниц, загрузка веб-страниц
  • Использование Python request.get для анализа html-кода, который не загружается сразу
  • веб-очистка данных из таблиц
  • Проблемы с извлечением селена: ожидания / не обнаружение элементов
  • Вложенные для петли с неравными объектами
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.