将整个列表的值存储在同一csv行中

2024-10-03 17:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,如下所示

list = [[12,21][32,42],[55,67]]

我只想将列表的值存储在CSV文件的一行中,如下所示

 | row-no | 12 | 21 | 32 | 42 | 55 | 67 |

每个值都保存在CSV文件的不同列中。列表的大小在CSV文件的不同行中也可能有所不同

以下是我迄今为止所做的:

with open(somefile, 'w') as csvfile:
    InfoWrite = csv.writer(csvfile, delimiter=',')
    InfoWrite.writerow(['row-no','A','B','C','D','E','F'])

    len_list = len(list)
        if(len_list > 0):
            for j in range(len_list):
                InfoWrite.writerow([row-no,list[j][0],list[j][1]])

它给出了以下内容:

| row-no | 12 | 21 |
| row-no | 32 | 42 |
| row-no | 55 | 67 |

我希望实现与上面所示类似的输出。任何帮助和建议都将不胜感激


Tags: 文件csvcsvfileno列表lenaswith
3条回答

您需要先将列表展平。其中一种方法如下

import itertools
lst = [[12,21],[32,42],[55,67]]
lst = list(itertools.chain(*lst))
# now lst is [12, 21, 32, 42, 55, 67]

旁注:不要使用内置函数作为变量名-您将无法使用这些函数

这段代码是用JavaScript编写的

worksheet.eachRow({ includeEmpty: false }, function (row, rowNumber) {

                var insideArray = [];
                row.eachCell({ includeEmpty: false }, function (cell, colNumber) {
                        insideArray[colNumber-1] = cell.value;
                });
               data = data[row]

这不是精确的解决方案,但可以与之相关

您可以使用以下方法展平列表:

matrix = [[12,21], [32,42],[55,67]]
flatten_matrix = [val for sublist in matrix for val in sublist]
print(flatten_matrix)

>>> [12, 21, 32, 42, 55, 67]

然后用以下命令将其写入csv

with open(somefile, 'w') as csvfile:
    InfoWrite = csv.writer(csvfile, delimiter=',')
    row_no = 'row-no'
    InfoWrite.writerow([row_no,'A','B','C','D','E','F'])
    InfoWrite.writerow([row_no] + flatten_matrix)

相关问题 更多 >