Я пытаюсь получить данные из Интернета для печати в Excel рядом друг с другом, а не по вертикали. - PullRequest
0 голосов
/ 29 января 2019

Я удалил 2 набора данных с веб-страницы и импортировал их в файл xls.\ n позволяет мне перезапустить программу и распечатать данные под старыми данными, но я хотел бы напечатать новые данные в столбце рядом со старыми данными.

Вставляется так:

Старые данные (новая строка) Новые данные

Я бы хотел вставить вот так:

Старые данные (новыеколонка) Новые данные

Я попытался использовать \ t и \ n в моем формате текущего кода.Я не уверен, что у меня неправильное расположение или есть другая \ команда.

def main():
    import csv
    import os
    from selenium import webdriver

    ticker = input("Enter your ticker: ")
    url = "http://financials.morningstar.com/cash-flow/cf.html?t=" + ticker.upper()
    print(url)

    browser = webdriver.Firefox()
    browser.get(url)

    values_elementticker = browser.find_elements_by_xpath("//span[@class='gry']")
    values2 = values = [x.text for x in values_elementticker]
    print(values2[0])

    values_element = browser.find_elements_by_xpath("//div[@id='data_i97']")
    values = [x.text for x in values_element]
    print("Cash Flows:")
    print(values[0])



    with open("results.xls", "a") as f:
        for i in range(len(values2)):
            f.write(values2[0] + "\n")
        for i in range(len(values)):
            f.write(values[0] + "\n")

    browser.close()
    restart = input("Do you wish to start again?").lower()
    if restart == "yes":
        main()

    else:
        exit()
main()

В настоящее время он печатается так

IBM

13,345

12,685

12,857

12,808

12,951

12,741

 ABB

2,547

2,819

2,942

3,012

2,850

1,923

Я бы хотел напечатать такв Excel

  IBM     |   ABB

13,345   |   2,547

12,685   |   2,819

12,857   |   2,942

12,808   |  3,012

12,951   |   2,850

12,741   |   1,923

1 Ответ

0 голосов
/ 30 января 2019

Я не уверен, работает ли это в данном контексте, но чтение и запись в файл .csv намного проще и быстрее.Файлы .xls предназначены для открытия в Excel (или аналогичных файлах) и содержат форматы, таблицы и другие многомерные данные, что делает их довольно сложными для работы.

Поскольку .csv определяет столбцы с запятыми, оничасто легко и быстро читать и писать.И, в конце концов, вы все равно можете открыть .csv с программным обеспечением для работы с электронными таблицами, чтобы оно могло быть функциональным решением.

Мое предложение:

with open("results.csv", "a") as f:
    for x,y in zip(values2,values1):
        line = "%s,%s\n" % (x,y)
        f.write(line)

Если вы действительно настаиваете напри записи в файл xls, вероятно, лучше использовать модуль специально для этой цели, как это предлагается в комментарии Камала.

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