【问题标题】:Write a csv file after scraping data from reddit从 reddit 抓取数据后写入 csv 文件
【发布时间】:2020-02-25 11:55:56
【问题描述】:

我是编码新手,无法使用从 Reddit 抓取的数据编写 CSV 文件。

首先,我使用 pushshift API 抓取数据,它以列表格式返回结果,如下图enter image description here

我想将该数据写入 CVS 文件以在 R 中运行内容分析。将每一行(0000、00001 等)作为一行。但是,我无法运行将每个参数组织在一列中的代码。例如,我希望列是 submits.author、submissions.num_cmets、submissions.title 等等。

我运行了这段代码,但结果并不完全符合我的要求

import csv
 with open('my_file.csv', 'w') as f:
    writer = csv.writer(f)
    with open('my_file.csv', 'w') as f:
      for row in lastest_submissions:
        row_text = ','.join(row) + '\n'  
        f.write(row_text)

结果看起来像这样enter image description here

我想要的是参数的名称是标题,参数答案是每个单元格中的内容。例如,对于参数 'author':'bl00d',标题为作者,单元格中的内容为 bl00d(对于第 0000 行)。

感谢我能得到的帮助和提示。另外,如果我应该提供完整的代码,请告诉我

【问题讨论】:

  • 不必打开 csv 两次。另外,我看不到您在哪里添加标题。

标签: python export-to-csv reddit


【解决方案1】:

在您的情况下,由于您已经拥有字典列表形式的数据,我认为您可能想尝试使用 csv.Dictwriter()

示例代码片段:

import csv
lstdc = [{'name':'Jack', 'age': 26}, 
        {'name':'John', 'age': 27},
        {'name':'Lisa', 'age': 36},
        {'name':'Adam', 'age': 16}]

fieldNames = list((lstdc[0]).keys())

with open('list_of_dict_to_csv.csv','w', newline='\n') as f:
    writer = csv.DictWriter(f, fieldNames)
    writer.writeheader()
    for val in lstdc:
        writer.writerow(val)

您可以将 lstd​​c 替换为 latest_submissions 并将 list_of_dict_to_csv.csv 替换为 my_file.csv

用内置的 writerows() 替换列表字典的迭代

with open('list_of_dict_to_csv.csv','w', newline='\n') as f:
    writer = csv.DictWriter(f, fieldNames)
    writer.writeheader()
    writer.writerows(lstdc)

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    这就足够了:

    with open('my_file.csv', 'w') as f:
        writer = csv.writer(f)
        headers = lastest_submissions[0].keys()
        writer.writerow(headers)
    
        with open('my_file.csv', 'w') as f:
            for row in lastest_submissions:
                writer.writerow(row.values())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      • 2016-04-22
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 2019-07-20
      相关资源
      最近更新 更多