2017-08-07 55 views
2
def chunks(l, n): 
    for i in range(0, len(l), n): 
     yield l[i:i+n] 
boleta.write(str(list(chunks(carrito, 3)))) 

我使用這段代碼創建每個子元素的3個元素,但我需要逐行寫入子列表並不是全部在一行中。如何逐行將子列表寫入文本文件?

我有什麼:

[[1, '001', 40], [1, '002', 20]] 

我需要什麼:

[1, '001', 40] 
[1, '002', 20] 

回答

3

你應該將整個結果不轉換到一個列表,然後將其轉換成一個字符串,你應該迭代通過輸出,並將每個個別子列表轉換爲字符串。像:

for sublist in chunks(carrito, 3): 
    boleta.write(str(sublist)) 
    boleta.write('\n') 

或者你可以'\n'.join(..)輸出端連接起來,然後寫得到的字符串,如:

boleta.write('\n'.join(str(subl) for subl in chunks(carrito, 3))) 

在一些系統上'\n'不是行分隔符。您可以通過使用os.linesep使程序更通用:

from os import linesep 

boleta.write(linesep.join(str(subl) for subl in chunks(carrito, 3))) 
+1

非常感謝您,它工作得非常好! –

相關問題