【发布时间】:2021-07-31 11:21:57
【问题描述】:
我正在从 Twitter 的 API 收集推文。我的代码正在返回一个我已转换为字典的字符串。我正在寻找通过创建列来存储这些数据的 CSV。我附上了一张我的 CSV 目前看起来像的图片。
当前 CSV 图像:
.
您对创建以下内容有什么建议;
期望的结果:
with open('dict.csv', 'w') as csv_file:
writer = csv.writer(csv_file)
for key, value in y.items():
writer.writerow([key, value])
#with open('my_file.csv', 'w') as f:
# [f.write('{0},{1}\n'.format(key, value)) for key, value in y.items()]
完整代码:
import requests
import os
import json
import pandas as pd
import csv
import sys
import time
bearer_token = "insert here"
search_url = "https://api.twitter.com/2/tweets/search/all"
query_params = {'query': '(Johnson&Johnson) -is:retweet -is:verified -baby -lotion -shampoo','tweet.fields': 'text', 'tweet.fields':'created_at', 'start_time':'2021-01-20T00:00:01.000Z', 'end_time':'2021-02-17T23:30:00.000Z'}
#query_params={'query':'(vaccine OR vaccinated) -is:retweet -is:verified -RT -baby -lotion -shampoo&start_time=2021-01-20T00:00:01.000Z&end_time=2021-02-20T23:30:00.000Z&max_results=10&tweet.fields=author_id,conversation_id,created_at,geo,id,lang,source,text&expansions=author_id&place.fields=full_name&user.fields=created_at,description,entities,id,location,name,url,username'}
def create_headers(bearer_token):
headers = {"Authorization": "Bearer {}".format(bearer_token)}
return headers
def connect_to_endpoint(url, headers, params):
response = requests.request("GET", search_url, headers=headers, params=params)
print('first:', response.status_code)
if response.status_code != 200:
raise Exception(response.status_code, response.text)
return response.json()
def main():
headers = create_headers(bearer_token)
json_response = connect_to_endpoint(search_url, headers, query_params)
x = json.dumps(json_response,sort_keys=True)
y = json.loads(x)
if __name__ == "__main__":
main()
【问题讨论】:
-
不要附上文字图片。附上文字。对于想要使用您的示例数据的任何人来说,屏幕截图完全没有用处。
-
你试过
df = pd.DataFrame(y["data"]) ; df.to_csv("result.csv")吗? -
除此之外,还有数百(如果不是数千)关于如何在 Python 中将 dicts 转换为 CSV 的答案。您的问题并非特定于 Twitter,实际上它与 Twitter 完全无关。您只需拥有从 somewhere 获得的 dicts 列表,并希望将其转换为 CSV。四处寻找该主题的现有答案并尝试其中的几个。如果您对自己的尝试有特定的问题,欢迎提出。