如何逐行将子列表写入文本文件?

时间:2017-08-07 15:36:36

标签: python python-3.x

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]

1 个答案:

答案 0 :(得分: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)))