【发布时间】:2017-06-24 01:16:06
【问题描述】:
我目前正在尝试将列表写入 csv 文件,以便每行有 x 个值(值的数量是 x 的倍数)。一段时间以来,我一直在寻找解决方案,并且找到了许多方法来解决这个问题,但我似乎无法让代码做我想做的事情。
这是我假设的例子... 我试图压缩列表,以便它是一个列表列表,试图让它每行写入 2 个值。但是没有用;这就是发生的事情......
我希望 .txt 文件中的列表如下所示:
Chocolates,3
Novels,14
Pens,4
Smiles,78
但在我的编码中,它看起来像这样......
record1 = ['Chocolates', '3', 'Novels', '14', 'Pens', '4', 'Smiles', '78']
我用这个来压缩它:
records = [record1[i:i+2] for i in range(0, len(record1), 2)]
prize = open("box.txt","w")
writer = csv.writer(prize)
writer.writerow(records)
但是在txt文件中是这样的
"['Chocolates', '3']","['4', '14']","['Pens', '4']","['Smiles', '78']"
我也尝试过以不同的方式将列表写入文件...
prize = open("box.txt","w")
writer = csv.writer(prize)
for record in records:
writer.writerow(records)
prize.close()
但它看起来像这样:
"['Chocolates', '3']","['hiii', '14']","['Pens', '4']","['Smiles', '78']"
"['Chocolates', '3']","['hiii', '14']","['Pens', '4']","['Smiles', '78']"
"['Chocolates', '3']","['hiii', '14']","['Pens', '4']","['Smiles', '78']"
"['Chocolates', '3']","['hiii', '14']","['Pens', '4']","['Smiles', '78']"
我不知道我是否走在正确的轨道上,或者我的方法是否正确。我认为外观取决于列表的外观,但是,我开始相信这取决于我将其写入文件的方式。
感谢您的阅读。希望我的解释清楚,如果不是很抱歉。
【问题讨论】:
-
>>> record1 = ['Chocolates', '3', 'Novels', '14', 'Pens', '4', 'Smiles', '78'] >>> [record1[i:i+2] for i in range(0, len(record1), 2)] [['Chocolates', '3'], ['Novels', '14'], ['Pens', '4'], ['Smiles', '78']] -
除非您只是想学习
csv模型,否则您的案例直接写出来会更容易。对于一般重组(即分区),请参阅stackoverflow.com/questions/3992735/…