我有一个JSON输出,并使用for循环将每个元素附加到python列表中。我正在使用append
函数将元素添加到我的列表中。循环完成后,我要将列表中的每个项转换为字符串。问题是列表中的每个元素都是另一个列表。例如,在一个主列表中有两个列表。我已经尝试使用下面的代码将列表转换成字符串。你知道吗
我试过使用:
print '\n'.join(map(str, folder_concat))
print '\n'.join(str(x) for x in folder_concat)
我还尝试在附加前使用以下命令转换附加列表:
''.join(map(str, my_string.append(...elements to append...)
但是,在典型的列表样式中,输出总是相同的unicode格式,如下所示:
(u'190430', u'TEST', u'Executing', False, False, u'20190430000522', u'20190430000522', u'20190506141820')
(u'190430', u'TEST1', u'Executing', False, False, u'20190430000522', u'20190430000522', u'20190506141820')
要添加到请求中,在append中填充的一些元素也是列表,例如estimatedStartTime
,这可以用空数据获取,因此我不能使用(str(x) for x in folder_concat)
对其进行迭代,因为它将使用Iterable Error
失败。你知道吗
以下是我使用的脚本:
#!/usr/bin/python
import json
import sys
json_string = sys.stdin.read()
json_data = json.loads(json_string)
returned = json_data['returned']
if returned > 0:
locations = json_data['statuses']
sess_count = 0
folder_count = 0
folder_concat = []
folder_str = []
for i in locations:
if i['type'] == 'Folder':
folder_count += 1
folder_concat.append((
i.get('orderDate', ''),
i.get('folderId', ''),
i.get('status', ''),
i.get('held', ''),
i.get('deleted', ''),
i.get('startTime', ''),
(''.join(i.get('estimatedStartTime', ''
)[0]) if 'estimatedStartTime'
in i else ''.join(i.get('estimatedStartTime', ''))),
(''.join(i.get('estimatedEndTime', ''
)[0]) if 'estimatedEndTime'
in i else ''.join(i.get('estimatedEndTime', ''))),
))
else:
pass
print '\n'.join(str(x) for x in folder_concat)
elif odata['returned'] == 0:
print 'No results fetched.'
else:
pass
输入文件是:
{
"statuses" : [ {
"orderDate" : "190430",
"folderId" : "TEST",
"status" : "Executing",
"held" : false,
"deleted" : false,
"startTime" : "20190501000551",
"estimatedStartTime" : [ "20190501000551" ],
"estimatedEndTime" : [ "20190505043236" ],
} ,{
"orderDate" : "190430",
"folderId" : "TEST1",
"status" : "Executing",
"held" : false,
"deleted" : false,
"startTime" : "20190501000551",
"estimatedStartTime" : [ "20190501000551" ],
"estimatedEndTime" : [ "20190505043236" ],
}],
"returned" : 2,
"total" : 2
}
结果应该如下所示:
190430, TEST, Executing, False, False, 20190430000522, 20190430000522, 20190506141820
190430, TEST1, Executing, False, False, 20190430000522, 20190430000522, 20190506141820
首先,在元组上执行str时,它将精确打印元组,因此使用括号。你知道吗
我将通过以下方式更改文件夹输出:
这样,您就有了将元素转换为所需字符串的第一步,然后保持相同的流。如果你有任何问题,请告诉我。你知道吗
相关问题 更多 >
编程相关推荐