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

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

Я успешно извлек таблицу из html с помощью BeatifulSoup, благодаря предыдущим ответам на мои вопросы. Теперь моя новая проблема - хранение отдельных элементов данных в отдельных переменных.

Моя выведенная таблица выглядит так:

year|salary|bonus
2005|100,000|50,000
2006|120,000|80,000

Я хочу иметь возможность создавать переменную для зарплаты и одну для бонуса и включать соответствующие суммы для каждого года.

Вот мой код для получения этих таблиц:

from BeautifulSoup import BeautifulSoup
import re

html = '<html><body><p align="center"><table><tr><td>year</td><td>salary</td><td>bonus</td></tr><tr><td>2005</td><td>100,000</td><td>50,000</td></tr><tr><td>2006</td><td>120,000</td><td>80,000</td></tr></table></html>'
soup = BeautifulSoup(html)
table = soup.find('table')
rows = table.findAll('tr')

store=[]

for tr in rows:
    cols = tr.findAll('td')
    row = []
    for td in cols:
        try:
            row.append(''.join(td.find(text=True)))
        except Exception:
            row.append('')
    store.append('|'.join(row))
print '\n'.join(store)

Есть ли способ создания переменных для извлечения зарплаты и бонусов за каждый год?

1 Ответ

1 голос
/ 20 апреля 2011

Вы имеете в виду магазин, а не просто печать каждой строки?Вы можете поместить их в словарь;при условии, что столбцы всегда расположены в указанном порядке и всегда указываются, вы можете использовать что-то вроде:

payment_dict = {}
for tr in rows:
  year_td, salary_td, bonus_td = tr.findAll('td')
  salary = salary_td.find(text=True)
  bonus = bonus_td.find(text=True)
  payment_dict[year_td.find(text=True)] = {'salary': salary, 'bonus': bonus}

# payment_dict['2005']['bonus'] = '50,000'

Если в году несколько строк, вам придется составлять значение каждого года как список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...