![](/img/trans.png)
[英]How save an string output after a for loop in python with pandas and csv modules?
[英]How to save Python Json output as a CSV file using modules
我正在嘗試獲取保存為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()
誰能告訴我,我在做什么錯?
*編輯*
再次大家好,
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)
print(resp)
print(whale())
output_fil = 'blab.csv'
horse = len(whale) - 1
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):
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])
data_til_fil.close()
if __name__ == "__main__":
get_invoice()
但是,我仍然無法使其正常工作,因為它不喜歡我的
horse = len(whale) - 1
線。 Python回應
TypeError: object of type 'method' has no len()
這里有沒有足夠的耐心幫助我的人? 我可以說,無論現在還是將來,許多使用電子經濟學的人都會很感激。 :-)
當您使用worksheet.write時,它僅寫入1個特定的單元格,您不想在一個單元格中編寫所有內容,對嗎? 引用https://stackoverflow.com/a/35623260/7492424
只需更換
worksheet.write(1, 1, resp)
同
json_to_excel(worksheet, resp.json())
def json_to_excel(ws, data, row=0, col=0):
if isinstance(data, list):
row -= 1
for value in data:
row = json_to_excel(ws, value, row+1, col)
elif isinstance(data, dict):
max_row = row
start_row = row
for key, value in data.iteritems():
row = start_row
ws.write(row, col, key)
row = json_to_excel(ws, value, row+1, col)
max_row = max(max_row, row)
col += 1
row = max_row
else:
ws.write(row, col, data)
return row
您的新代碼有幾個問題。
resp.json是一種方法,因此您需要調用它來獲取值(resp.json())。 結果是一張地圖,我想您需要“收集”以提取內容。
在[17]中:resp.json()。keys()在[17]中:dict_keys(['collection','metaData','pagination','self'])
您關閉文件的時間過早,請將關閉操作移出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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.