[英]How to convert a list within a list to string in Python
我有一個JSON輸出,我正在使用for循環將每個元素附加到python列表中。 我正在使用append
函數將元素添加到列表中。 循環完成后,我想將列表中的每個項目轉換為字符串。 問題在於列表中的每個元素都是另一個列表。 因此,例如,一個主列表中有2個列表。 我試圖用下面的代碼窮盡將列表轉換成字符串的可能性。
我嘗試使用:
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')
為了添加到請求中,列表中還填充了一些元素,例如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時,它將精確打印該元組,並帶有括號。
我將通過以下方式更改文件夾輸出:
for i in locations:
folder_count += 1
content = [
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', ''))),
]
folder_concat.append(', '.join(str(item) for item in content))
print '\n'.join(str(x) for x in folder_concat)
這樣,您第一步就可以將元素轉換為所需的字符串,然后保持相同的流程。 如果您有任何問題,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.