You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于tkinder与tksheet的CSV读取应用:通过循环将多列表合并为单一嵌套列表的实现咨询

解决CSV读取时多行列表合并为单一嵌套列表的问题

嘿,我看你现在的问题根源在于每次循环都把liste重写成了新的单行列表,完全没把之前的行内容保留下来对吧?要实现把所有符合条件的行收集成一个嵌套列表,只需要提前初始化一个空的总列表,然后把每个子列表追加进去就搞定了。

原代码问题分析

你的原代码里,每次进入if块都会重新定义liste,相当于每次都把之前的内容覆盖掉,所以最终只能得到单独的行输出,而不是所有行的集合:

import csv

with open('my_csv_file.csv') as csvfile:
    reader = csv.reader(csvfile, delimiter=';')
    for row in reader:
        if row != '' and row[0].isdigit():
            liste = [row[0], row[1], row[2], row[3], row[4]]
            print(liste)

修改后的代码

只需要加一步初始化总列表,再用append()方法把每个符合条件的子列表加进去就行:

import csv

# 先初始化一个空的总列表,用来装所有子列表
final_list = []

with open('my_csv_file.csv') as csvfile:
    reader = csv.reader(csvfile, delimiter=';')
    for row in reader:
        # 这里把row != ''改成了row,因为csv.reader返回的空行是[]而非空字符串,判断更准确
        if row and row[0].isdigit():
            sub_list = [row[0], row[1], row[2], row[3], row[4]]
            final_list.append(sub_list)

# 循环结束后再打印总列表,就是你要的嵌套结构了
print(final_list)

额外小优化

  • 变量名改成了final_list和sub_list,比原来的liste更直观,后期维护也方便
  • 修正了空行的判断逻辑,更适配csv.reader的返回规则

现在运行代码,就能得到你期望的输出:

[['AAA', 'AAA', 'AAA', 'AAA', 'AAA'], ['BBB', 'BBB', 'BBB', 'BBB', 'BBB'], ['CCC', 'CCC', 'CCC', 'CCC', 'CCC']]

内容的提问来源于stack exchange,提问作者Quentin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:22:31