我是编码的新手,无法使用从Reddit抓取的数据编写CSV文件。
首先,我使用pushshift API抓取数据,该API以列表格式返回结果,如下图enter image description here
我想将该数据写入CVS文件以在R中运行内容分析。每行(0000、00001等)都作为一行。但是,我无法运行用于组织列中每个参数的代码。例如,我希望这些列为submittings.author,submissions.num_comments,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',标题为author,单元格中的内容为bl00d(对于0000行)。
我很感谢我的帮助和暗示。另外,让我知道是否应该提供完整的代码
答案 0 :(得分:0)
在您的情况下,因为您已经拥有字典列表形式的数据,我想您可能想尝试使用 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)
您可以将 lstdc 替换为 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)
希望这会有所帮助!
答案 1 :(得分:0)
这应该满足:
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())