Python 将x个值写入txt文件中的每一行

Python 将x个值写入txt文件中的每一行,python,csv,rows,Python,Csv,Rows,我目前正在尝试将列表写入csv文件,以便每行有x个值(值的数量是x的倍数)。我已经寻找了一段时间的解决方案,我已经找到了很多方法来解决这个问题,但我似乎无法让代码实现我想要的 这是我假设的例子。。。 我尝试压缩列表,这是一个列表列表,试图让它每行写入2个值。但是没有用;这就是发生的事情 我希望.txt文件中的列表如下所示: Chocolates,3 Novels,14 Pens,4 Smiles,78 "['Chocolates', '3']","['hiii', '14']","['Pens

我目前正在尝试将列表写入csv文件,以便每行有x个值(值的数量是x的倍数)。我已经寻找了一段时间的解决方案,我已经找到了很多方法来解决这个问题,但我似乎无法让代码实现我想要的

这是我假设的例子。。。 我尝试压缩列表,这是一个列表列表,试图让它每行写入2个值。但是没有用;这就是发生的事情

我希望.txt文件中的列表如下所示:

Chocolates,3
Novels,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']"
"['Chocolates', '3']","['hiii', '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
Novels,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']"
"['Chocolates', '3']","['hiii', '14']","['Pens', '4']","['Smiles', '78']"
我不知道我是否在正确的轨道上,或者我的方法是否正确。我认为外观取决于列表的外观,但是,我开始相信它取决于我将其写入文件的方式


谢谢你的阅读。希望我的解释是清楚的,如果不是,很抱歉。

您调用了错误的方法。必须是:

prize = open("box.csv","w")
writer = csv.writer(prize)
writer.writerows(records)
我希望你喜欢这个

import csv


record1 = ['Chocolates', '3', 'Novels', '14', 'Pens', '4', 'Smiles', '78']
with open('box.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile)
    for item, count in zip(record1[::2], record1[1::2]):
        writer.writerow([item, count])

参考资料:

在第一种情况下,您应该使用
writerows()
,而不是
writerow()

在第二种情况下,应为:

for record in records:
    writer.writerow(record)    # record, not records
演示

尝试将其粘贴到Python shell中:

import csv

record1 = ['Chocolates', '3', 'Novels', '14', 'Pens', '4', 'Smiles', '78']
records = [record1[i:i+2] for i in range(0, len(record1), 2)]

with open("box.txt", "w") as prize:
    writer = csv.writer(prize)
    writer.writerows(records)
运行此代码后,
box.txt
包含:

Chocolates,3 Novels,14 Pens,4 Smiles,78 巧克力,3块 小说,14 钢笔,4支 微笑,78
>>>record1=['chocolate','3','Novels','14','Pens','4','Smiles','78']>>>[record1[i:i+2]表示范围内的i(0,len(record1),2][['chocolate','3'],['Novels','14'],['Pens','4'],['Smiles','78']]
除非您只是试图学习
csv
模型,否则您的案例更容易直接写出。对于一般的重新组合(即分区),请参见哦,谢谢-我没有意识到这一点。唯一的问题是,现在,这些值在文本文件中显示如下:巧克力、3个hiii、14支钢笔、4个微笑、78**四次我想我们讨论的是不同的解决方案。我的答案是关于你的第一个片段。你是怎么打开文件的?在Excel中?不,我使用的是文本文件(记事本)。抱歉,如果我的解释不够清楚,但我展示的两次尝试都是为了相同的目的:在我的文本文件的每行中打印x(在这个假设的场景中-2)值将文件保存为.csv,然后您可以在Excel中打开它。再次检查我的答案,我把我的评论放在上下文中。是的!它起作用了。非常感谢你,我真的很感激。你确定是后者吗?我的文件中的每个字符之间都写有逗号,例如c、h、o、c、o、l、a、t、e、s、3等等。@Tamz.001:如果您尝试在record1:中记录
,则会发生这种情况。不要将
record1
records
混淆,后者是按N分组的列表。是的,我按照你说的做了,但这仍然发生了。谢谢你的帮助。@Tamz.001:那么你一定做了一些不同的事情——这对我很有用。我在回答中添加了一个完整的例子;尝试将该逐字粘贴到Python shell中。