我将json数据转储到CSV文件时遇到问题。我的CSV文件通常缺少一块json数据,但是如果我在控制台或文件中打印json,就可以看到。
基本上我正在调用一个服务两次并收回两个我解析并转储到CSV文件中的json响应。该服务只能被调用7天增量(unix时间),所以我已经实现了逻辑来在一段时间内为这个增量调用服务。
我正在使用python vanilla json
和csv
库。
首先使用标题创建CSV:
with open ('history_' + datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")+'.csv', 'wb') as outcsv:
writer = csv.writer(outcsv)
writer.writerow(["Column1","Column2", "Column3", "Column4", "Column5",
"Column6"])
然后,我有一个调用该服务两次,五十次(在打开CSV文件后)的计数器:
while y<50:
jsoResponseOne = getJsonOne(7)
jsonResponseTwo = getJsonTwo(7)
json响应示例:
{"Value":
[
{"ExampleName": "Test",
"ExampleNameTwo": "Test2",
"ExampleDate": "1436103790",
"ExampleCode": 00000001,
"ExampleofExample": "abcd",
"AnotherExample": "hello"},
{"ExampleName": "Test2",
"ExampleNameTwo": "Test3",
"ExampleDate": "1436103790",
"ExampleCode": 00000011,
"ExampleofExample": "abcd",
"AnotherExample": "hello2"},
]
}
CSV输出列如下所示:
ExampleName ExampleNameTwo ExampleDate ExampleCode ExampleofExample AnotherExample
最后,CSV编写如下:
for item in jsonResponseOne['Value']:
row = []
row.append(str(item['ExampleName'].encode('utf-8')))
if item.get("ExampleNameTwo"):
row.append(str(item["ExampleNameTwo"]))
else:
row.append("None")
row.append(str(item['ExampleDate']))
row.append(str(item['ExampleCode'].encode('utf-8')))
row.append(str(item['ExampleofExample'].encode('utf-8')))
row.append(str(item['AnotherExample'].encode('utf-8')))
writer.writerow(row)
for item in jsonResponseTwo['Value']:
anotherRow= []
anotherRow.append(str(item['ExampleName'].encode('utf-8')))
if item.get("ExampleNameTwo"):
anotherRow.append(str(item["ExampleNameTwo"]))
else:
anotherRow.append("None")
anotherRow.append(str(item['ExampleDate']))
anotherRow.append(str(item['ExampleCode'].encode('utf-8')))
anotherRow.append(str(item['ExampleofExample'].encode('utf-8')))
anotherRow.append(str(item['AnotherExample'].encode('utf-8')))
writer.writerow(anotherRow)
为什么我的CSV输出会丢失整行数据(来自JSON响应的数据块)?
答案 0 :(得分:1)
解决。
Python脚本在其中一个while循环中出现缩进问题,导致某些数据被跳过而不会写入CSV文件。