如何使用模块将pythonjson输出保存为CSV文件

2024-05-19 03:38:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到我的数据输出,保存为xlsm或csv文件,但我不知道我是怎么做到的。 代码包括我的一次尝试

import requests
import xlsxwriter

BASE_URL = 'https://restapi.e-conomic.com/'
HEADERS = {
  'X-AgreementGrantToken': 'demo',
  'X-AppSecretToken': 'demo',
  'Content-type': 'application/json'
}
def get_invoice():
  url = "{0}/{1}".format(BASE_URL, 'invoices/booked')
  resp = requests.get(url, headers=HEADERS)
  print(resp)
  print(resp.json())
  workbook = xlsxwriter.Workbook('demo1.xlsx')
  worksheet = workbook.add_worksheet()
  worksheet.write(1, 1, resp)
  workbook.close()

if __name__ == "__main__":
  get_invoice()

谁能告诉我,我做错了什么?在

*编辑*

再次向大家问好

我比昨天进步了一点

^{pr2}$

但是我还是很难让它工作,因为它不喜欢我的

horse = len(whale) - 1 

行。Python的响应是

TypeError: object of type 'method' has no len()

这里有没有人有足够的耐心来帮助我?我可以说,很多使用经济经济学的人,现在和将来都会很感激。:-)


Tags: importjsonurlbasegetdemotypeinvoice
2条回答

你的新代码有几个问题。在

  1. 在响应json是一个方法,因此需要调用它来获取值(响应json()). 结果是一张地图,我想你需要“收集”来提取内容。在

    在[17]:响应json().键() Out[17]:dict_键(['collection','metaData','pagination','self'])

  2. 关闭文件太早,请将关闭移出for循环。

请尝试下面的代码,看看这是否是你想要的。在

import requests
import json
import csv

BASE_URL = 'https://restapi.e-conomic.com/'
HEADERS = {
  'X-AgreementGrantToken': 'demo',
  'X-AppSecretToken': 'demo',
  'Content-type': 'application/json'
}


def get_invoice():
    url = "{0}/{1}".format(BASE_URL, 'invoices/booked')
    resp = requests.get(url, headers=HEADERS)
    # whale = (resp.json)
    whales = resp.json()['collection']
    #print(resp)
    #print(whale())
    output_fil = 'blab.csv'
    horse = len(whales)

    data_til_fil = open(output_fil, 'w', newline='')
    csv_writer = csv.writer(data_til_fil, delimiter=";")
    csv_writer.writerow(["bookedInvoiceNumber","date","netAmount","vatAmount","grossAmount","dueDate"])

    #for i in range(0, horse):
    for meetup in whales:
        #meetup = whale[i]
        bookedInvoiceNumber = meetup['bookedInvoiceNumber']
        date = meetup['date']
        netAmount = meetup['netAmount']
        vatAmount = meetup['vatAmount']
        grossAmount = meetup['grossAmount']
        dueDate = meetup['dueDate']
        csv_writer.writerow([bookedInvoiceNumber,date,netAmount,vatAmount,grossAmount,dueDate])
    # you closed this file too early, pleaes make sure move this out of the for loop
    data_til_fil.close()

if __name__ == "__main__":
  get_invoice()

当你使用工作表.write,它只写一个特定的单元格,你不会想把所有的东西都写在一个单元格里吧? 引用https://stackoverflow.com/a/35623260/7492424

就换一个

worksheet.write(1, 1, resp)

^{pr2}$

相关问题 更多 >

    热门问题