我需要从 Meetup API 获取一些数据,将我得到的 JSON 转换为 CSV,所有这些都在 Python 3 中。我从未使用过 JSON 或 Python,所以我遇到了一些问题。获取数据不是问题,但我似乎无法将 JSON 对象解析为正确的 CSV 文件。我的代码,匿名:
import json
import requests
import csv
def main():
# initialize variables
output_file = 'result_meetup.csv'
api_key = "YOUR_MEETUP_API_KEY"
params = {'key': api_key}
url_path = 'http://api.meetup.com/pro/:URLNAME/groups'
# get data from API, parse to JSON
data = requests.get(url_path, params=params)
data_parsed = data.json()
length_data = len(data_parsed) - 1
data_to_file = open(output_file, 'w')
csv_writer = csv.writer(data_to_file)
for i in range(0, length_data):
meetup = data_parsed[i]
csv_writer.writerow([meetup])
data_to_file.close()
if __name__ == "__main__":
main()
现在,如您所见,我将 CSV 作为列表写入。这会导致一个非常丑陋的输出,如下所示(同样,大写字母中的值是匿名的):
{u'rsvps_per_event': 0.0, u'organizers': [{u'permission': u'organizer', u'name': u'NAME', u'member_id': ID}], u'repeat_rsvpers': 0, u'topics': [{u'lang': u'en_US', u'id': ID, u'urlkey': u'socialnetwork', u'name': u'Social Networking'}, {u'lang': u'en_US', u'id': ID, u'urlkey': u'education', u'name': u'Education'}, {u'lang': u'en_US', u'id': ID, u'urlkey': u'newtech', u'name': u'New Technology'}, {u'lang': u'en_US', u'id': ID, u'urlkey': u'business-referral-networking', u'name': u'Business Referral Networking'}], u'upcoming_events': 0, u'gender_female': 0.3499999940395355, u'pro_join_date': DATE, u'id': ID, u'category': [{u'shortname': u'career-business', u'sort_name': u'Career & Business', u'id': 2, u'name': u'Career & Business'}], u'city': u'CITY', u'member_count': 73, u'lon': LON, u'organizer_photo': {u'thumb_link': u'LINK.JPEG', u'base_url': u'URL', u'id': ID, u'type': u'member', u'photo_link': u'LINK.JPEG', u'highres_link': u'LINK.JPEG'}, u'average_age': 35.555599212646484, u'status': u'Active', u'description': u'DESCRIPTION' u'founded_date': DATE, lat': LAT, u'urlname': u'NAME', u'gender_male': 0.6000000238418579, u'name': u'NAME', u'country': u'Portugal', u'gender_unknown': 0.05000000074505806, u'past_events': 0, u'gender_other': 0.0, u'past_rsvps': 0}
所以基本上,整个 JSON 对象在单个 CSV 字段中,带有奇怪的 'u',在列表中等等。但是,如果我不把它写成一个列表,我只会得到 JSON 对象的字段,没有数据,所以它只是“组织者”、“名称”等,没有实际名称。正如我所说,我是一个 python 初学者,还没有找到任何库来帮助我,但我确信它们存在。非常感谢任何帮助,如果它与 Python3 兼容,那就太好了。
编辑:我希望它最终看起来像什么:我在回复中收到了多个 Meetup 组,所有组都具有如上所示的相同结构。因此,值的描述应该只列出一次,作为标题,下面列出的值(新行和管道表示 csv 表的新字段):
RSVPs_per_event | Organizer | ID
5 | Tom | 1
20 | Jack | 2
35 | Anne | 3