2017-08-07 58 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

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

相关问题