【问题标题】:Store a Python output to a csv file?将 Python 输出存储到 csv 文件?
【发布时间】:2021-05-17 13:02:01
【问题描述】:

我编写此代码的目的是从 API 从一定数量的股票代码中检索数据

    import requests
    import json
    import csv
    tickers = open("ticker_list.txt","r")
    for ticker in tickers:
        ticker = ticker.strip()
        url = "https://xxx/wallstreetbets/"+ticker
        headers = {'accept': 'application'}
        r = requests.get(url, headers=headers)
        data = r.json()
        json_string = json.dumps(data, indent=1)
        for tick in data:
            print(tick ['Date'],tick['Mentions'])

这会为每个股票返回这样的输出

    2018-08-10 1
    2018-08-28 1
    2018-09-07 1
    2018-10-09 1
    2018-10-18 1
    2018-11-28 1
    2019-01-04 1
    2019-01-08 1
    2019-01-10 1
    2019-01-16 5
    2019-01-23 1
    2019-01-24 1

左边是日期,右边是被提及的次数。

我现在要做的是将此结果存储到我有日期的 csv 文件中,并在列中提及,以便当我用 excel 打开 csv 文件时,我有:

    2018-08-10,1
    2018-08-28,1
    2018-09-07,1
    ...

提前感谢您的回答!

【问题讨论】:

    标签: python excel list api csv


    【解决方案1】:

    可以使用Python3的csv.writer()函数。

    给定的示例如下所示:

    import csv
    with open('eggs.csv', 'w', newline='') as csvfile:
        spamwriter = csv.writer(csvfile, delimiter=' ',
                                quotechar='|', quoting=csv.QUOTE_MINIMAL)
        spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
        spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
    

    在你的具体情况下,你会写:

    import requests
    import json
    import csv
    tickers = open("ticker_list.txt","r")
    for ticker in tickers:
        ticker = ticker.strip()
        url = "https://xxx/wallstreetbets/"+ticker
        headers = {'accept': 'application'}
        r = requests.get(url, headers=headers)
        data = r.json()
        json_string = json.dumps(data, indent=1)
        
        # new code vvv
        with open("filename.csv", 'w', newline='') as csv_file:
            for tick in data:
                csv_writer = csv.writer(csv_file)
                csv_writer.writerow([tick['Date'], tick['Mentions']])
    

    【讨论】:

    • 完美运行! (你最后错过了一个方括号,但没关系),非常感谢!
    • 很高兴它有效!还添加了缺少的括号,感谢您指出:)
    【解决方案2】:

    你可以这样做:

    import csv
    .
    .
    .
    with open('filename.csv', 'a+', newline='') as csvfile:
        fieldnames = ['Date', 'Mentions']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        for tick in data:
            writer.writerow({'Date': tick['Date'], 'Mentions': tick['Mentions']})
    
    

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      相关资源
      最近更新 更多