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]
最佳答案
您不应该将整个结果转换为列表,然后将其转换为字符串,您应该迭代输出,并将每个单独子列表转换为字符串。喜欢:
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)))
关于python - 如何将子列表逐行写入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45550755/