Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';我试图让网页上的数据在excel中并排打印,而不是垂直打印_Python_Excel - Fatal编程技术网

Python I';我试图让网页上的数据在excel中并排打印,而不是垂直打印

Python I';我试图让网页上的数据在excel中并排打印,而不是垂直打印,python,excel,Python,Excel,我从一个网页上抓取了2个数据集,并将其导入到一个xls文件中\n允许我重新运行程序并打印旧数据下的数据,但我希望打印旧数据旁边列中的新数据 它的粘贴方式如下: 旧数据 (新行) 新数据 我希望它像这样粘贴: 旧数据(新列)新数据 我已尝试在我的代码当前格式中同时使用\t和\n。我不确定我的安排是否错误,或者是否有不同的\命令 def main(): import csv import os from selenium import webdriver ticke

我从一个网页上抓取了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

我不确定这是否适用于给定的上下文,但读取和写入.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文件,那么可能最好按照Kamal的评论中的建议,使用专门用于该目的的模块。

我不确定这是否适用于您给定的上下文,但读取和写入.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文件,那么可能最好按照Kamal的评论中的建议,使用专门用于该目的的模块。

是否将open(“results.xls”,“a”)作为f:使a列成为活动列?也许你只需要把open(“results.xls”,“b”)作为f来处理:`第二列?我对编码还不熟悉,这实际上是我的第一个程序。话虽如此,我相信“a”允许我将我的数据添加到excel工作表中。我不相信“a”和专栏本身有任何关系。我厌倦了用“b”代替“a”,我想这是你的建议,这破坏了程序。在CMD中,它给了我“文件名、目录名或卷标语法不正确”。哦,是的,对不起,这是
open()
…我会看一看的。非常感谢!你能使用像这样的模块吗?它可以帮助您按照您的规范在excel中编写数据,还有更多。是否将打开(“results.xls”,“a”)作为f:使a列成为活动列?也许你只需要把open(“results.xls”,“b”)作为f来处理:`第二列?我对编码还不熟悉,这实际上是我的第一个程序。话虽如此,我相信“a”允许我将我的数据添加到excel工作表中。我不相信“a”和专栏本身有任何关系。我厌倦了用“b”代替“a”,我想这是你的建议,这破坏了程序。在CMD中,它给了我“文件名、目录名或卷标语法不正确”。哦,是的,对不起,这是
open()
…我会看一看的。非常感谢!你能使用像这样的模块吗?它可以帮助您按照规范在excel中写入数据,还有更多。我把您写入csv文件的方法弄得一团糟,它有点奏效,但我无法弄清楚如何获得我想要的结果。不过,我一定会在未来考虑这个方法,我已经想到了一些对我非常有用的方法,所以谢谢你的评论。我把你的方法写进CSV文件中,这样做很有效果,但是我没能弄清楚如何才能找到我想要的结果。不过,我一定会在未来考虑这个方法,我已经想到了一些对我非常有用的方法,所以谢谢你的评论。