Python循环以CSV格式写入列

时间:2011-12-14 05:25:06

标签: python csv

我正在尝试按如下方式编写csv:data [0] [0]应该在第1行A列,data [0] [1]应该在第1行B列,data [1] [0 ]应该在第2行A列,数据[1] [1]应该在第2行B列,依此类推。

如果我使用类似下面代码的低效内容,我可以按预期写入csv。

                for i in range(0, len(data)-lg):
                    writer.writerow([data[i][0], data[i][1], data[i][2],...])

我真的需要类似下面的代码。但是,此代码会在A列中写入所有内容。如何修改它以实现我的目标?感谢。

            for i in range(0, len(data)-lg):
                for j in range(0, lg+6):
                    writer.writerow([data[i][j]])

3 个答案:

答案 0 :(得分:3)

我认为执行此操作的惯用方法是这样的(不完全理解您的lg变量):

num_cols = lg + 6
for row in data:
    writer.writerow(row[:num_cols])

如果你没有对循环中的行进行任何处理,你可以更简洁地做到这一点:

writer.writerows(data)

修改1 根据解释lg变量

的评论进行了更新

答案 1 :(得分:2)

为什么不呢?

for row in data:
    writer.writerow(row)

答案 2 :(得分:0)

writerow()接受一行(字符串或数字序列)作为输入。您的第二个代码只将一个元素传递给writerow(),因此该元素被写入单独的行(即A列中的每个元素)。在您的第一个示例中,您通过将整个数据行集合传递给writerow()来做正确的事情,以便它可以工作。正如Dan D.建议采用更多的pythonic方式

for x in data:
    writer.writerow(x)