список оберток питона и преобразование типа в красивый суп - PullRequest
0 голосов
/ 19 сентября 2018

Ниже мой код:

from urllib.request import urlopen  # b_soup_1.py
from bs4 import BeautifulSoup

# Treasury Yield Curve web site, known to be HTML code
html = urlopen('https://www.treasury.gov/resource-center/'
               'data-chart-center/interest-rates/Pages/'
               'TextView.aspx?data=yieldYear&year=2018')

# create the BeautifulSoup object (BeautifulSoup Yield Curve)
bsyc = BeautifulSoup(html.read(), "lxml")

# save it to a file that we can edit
#fout = open('bsyc_temp.txt', 'wt', encoding='utf-8')

#fout.write(str(bsyc))

#fout.close()

# so get a list of all table tags
table_list = bsyc.findAll('table')


# to findAll as a dictionary attribute
tc_table_list = bsyc.findAll('table',
                      { "class" : "t-chart" } )

# only 1 t-chart table, so grab it
tc_table = tc_table_list[0]
# what are this table's components/children?
# tag tr means table row, containing table data
# what are the children of those rows?
# we have found the table data!
# just get the contents of each cell
print('\nthe contents of the children of the t-chart table:')
daily_yield_curves_temp = []
daily_yield_curves = []
for c in tc_table.children:
    for r in c.children:
        for i in r.contents:
            daily_yield_curves_temp.append(i)
for x in range(len(daily_yield_curves_temp) // 12):
    daily_yield_curves.append(daily_yield_curves_temp[12 * x : 12 * x + 12])

print(daily_yield_curves)

вывод:

[['Дата', '1 мес', '3 мес', '6 мес', «1 год», «2 года», «3 года», «5 лет», «7 лет», «10 лет», «20 лет», «30 лет»], «01/02/18», «1.29», «1.44», «1.61», «1.83», «1.92», «2.01», «2.25», «2.38», «2.46», «2.64», «2.81»], ['01 /03/18 »,« 1,29 »,« 1,41 »,« 1,59 »,« 1,81 »,« 1,94 »,« 2,02 »,« 2,25 »,« 2,37 »,« 2,44 »,« 2,62 »,« 2,78 »],['01 / 04/18 ',' 1.28 ',' 1.41 ',' 1.60 ',' 1.82 ',' 1.96 ',' 2.05 ',' 2.27 ',' 2.38 ',' 2.46 ',' 2.62 ','2.79 '], .....]

Однако я хочу, чтобы вывод выглядел следующим образом:

daily_yield_curves = [
        [ … header list … ],
        [ … first data list … ],
        …
        [ … final data list … ]
    ]

[«Дата», «1 месяц», «3 месяца», «6 месяцев», «1 год», «2 года», «3 года», «5 лет», «7 лет», «10 лет», «20 лет ', '30 лет']

После этого должен быть список для каждой строки данных.Преобразуйте каждое значение процентной ставки из строки в число с плавающей запятой:

['01/02/18', 1,29, 1,44, 1,61, 1,83, 1,92, 2,01, 2,25, 2,38, 2,46, 2,64,2,81] ... ['09 / 14/18 ', 2,02, 2,16, 2,33, 2,56, 2,78, 2,85, 2,90, 2,96, 2,99, 3,07, 3,13]

Пожалуйста, помогитемне как это изменить

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