在for循环后将Python字典写入csv文件

bqjvbblv  于 2022-12-06  发布在  Python
关注(0)|答案(2)|浏览(159)

下面的代码是为了从一个在线数据库中请求嵌套的json数据集,并且只提取我需要的信息。我可以打印结果,所以它基本上可以工作。但是,我不知道如何将这些结果写在一个.csv文件中。恐怕我不能提供一个最小工作示例,因为这意味着泄露我的登录名和密码。但是,任何关于如何做到这一点的帮助都是非常受欢迎的。因为我是初学者。

# returns JSON object as a dictionary
json_complete = json.load(f)

# retrieves specific data
for i in json_complete['data']:
    # documentId=i['documentId']
    if i['topics'] != None:
        for x in i['topics']:
            documentId=x['documentId']
            placeCited=x['topicPlaceName']
            year=i['date']['docYear']
            month=i['date']['docMonth']
            day=i['date']['docDay']
            documentDate=str(year)+ "-" + str(month)+"-" + str(day)
            
            print(str(documentId) + ',' + placeCited + ','+ documentDate + ',')

这是我得到的输出的一个片段:

57217,Iran / Asia / World / Top of the TGN hierarchy,1561-7-26,
57217,Halab / Halab / Suriyah / Asia,1561-7-26,
57224,Istanbul / Istanbul / Marmara / Turkiye,1561-8-8,
57224,Iran / Asia / World / Top of the TGN hierarchy,1561-8-8,
57224,Halab / Halab / Suriyah / Asia,1561-8-8,

我希望得到一个csv与标题沿着:

'DocumentID', 'Place', 'Date'
aamkag61

aamkag611#

使用csv程式库。https://docs.python.org/3/library/csv.html

import csv
file = open("file.csv", 'w', newline = "")
csvwriter = csv.writer(file)
csvwriter.writerow(['DocumentID', 'Place', 'Date'])
for i in json_complete['data']:
# documentId=i['documentId']
if i['topics'] != None:
    for x in i['topics']:
        documentId=x['documentId']
        placeCited=x['topicPlaceName']
        year=i['date']['docYear']
        month=i['date']['docMonth']
        day=i['date']['docDay']
        documentDate=str(year)+ "-" + str(month)+"-" + str(day)
        csvwriter.writerow([documentId, placeCited, documentDate])
file.close()

这个可以完成任务,希望对你有帮助。

hmmo2u0o

hmmo2u0o2#

试试这个

json_complete = json.load(f)

with open("test.csv") as file:
    file.write('DocumentID, Place, Date\n') # write the header from in file.
# retrieves specific data
    for i in json_complete['data']:
        # documentId=i['documentId']
        if i['topics'] != None:
            for x in i['topics']:
                documentId=x['documentId']
                placeCited=x['topicPlaceName']
                year=i['date']['docYear']
                month=i['date']['docMonth']
                day=i['date']['docDay']
                documentDate=str(year)+ "-" + str(month)+"-" + str(day)
                
                file.write(str(documentId) + ',' + placeCited + ','+ documentDate+'\n') # write the data row to file

相关问题