在Python中将数据写入CSV文件时,如何将数据按列而不是行写入?

3
我想要将csv文件中的数据写入列(A,B,C等),而不是行。以下是我尝试的代码:使用此代码,我能够在A列中写入。在下一个if条件中,我想要添加如果rec的值大于10且小于20,则打印到B列。我尝试了一些注释掉的代码,但它们只是写入行而不是列。可能有一个解决这个问题的大量工作,但是否有更简单和更清晰的方法呢?谢谢!(num_file.txt包含100个随机生成的数字,取值介于0到100之间)
    import csv
    l =[]
    with open("num_file.txt", "r") as ipfile, open("op1.csv", "w") as opfile:
        reader = csv.reader(ipfile)
        writer = csv.writer(opfile)
        for rec in reader:
          for i in range(len(rec)):
             if float(rec[i]) < 10:            
               l.insert(0,[rec[i]])
             #if float(rec[i]) > 10 and float(rec[i]) < 20:
             #  l.insert(1,[rec[i]])
        writer.writerows(l)

现在CSV文件的输出如下:

4.57

2.1

7.05

8.05

3.27

8.9

5.45

8.74

4.55

输出的CSV文件


你的数字文件长什么样子?例如,是逗号分隔的数字吗? - stucash
1个回答

1
你只需要写一行代码 writer.writerow(l)。如果你使用 writerows(l),那么你会为 l 中的每个元素写入一行,这就是为什么你会有一个元素对应一行的原因。 这里是关于csv.writer的文档

赶我一步了,文档在这里 - Sam
谢谢您的评论。我不想用一行写出所有元素。我想像我所做的那样,每行写一个元素。但是下一件我想做的事情是,如果每个元素都在10到20之间,我想像我的第一行写入一样,在B列中写入每个元素的单独行。我试过了被注释掉的代码,但它并没有起作用,它仍然在同一列A中写入,而不是B。 - A. S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接