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

Python读取CSV文件并将每行按3个字段分组存入数组的实现问题

现有代码存在的问题
  • 字段未清理空白:csv读取的字段会保留原文件里的前后空白字符,比如aa 、 a1这类内容拼接后会出现不符合预期的多余空格
  • 冗余的list转换:rows本身已经是转换完成的列表,len(list(rows))、len(list(rows[line]))不需要额外套list()
  • 内层循环次数错误:一行有9个字段的场景下,内层循环会执行9次,每次索引+3,到第4次循环时索引就会超过列表长度,触发IndexError报错
  • 结果列表初始化位置错误:每次内层循环都重新初始化t列表,导致每次只能存储当前分组,无法保留同一行的全部分组结果
  • 拼接逻辑不符合要求:直接用+拼接字段,没有插入空格,输出结果是aaa11而非要求的aa a1 1
  • 索引控制冗余:不需要同时维护i/j/k三个变量,单变量控制步长即可简化逻辑
正确实现代码
import csv

result = []
with open('Test.csv', encoding='utf-8') as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        # 先对每个字段去除前后空白
        cleaned_row = [field.strip() for field in row]
        # 按步长3分组,拼接成空格分隔的字符串
        row_groups = []
        for i in range(0, len(cleaned_row), 3):
            # 取i到i+3的三个元素,用空格拼接
            group = ' '.join(cleaned_row[i:i+3])
            row_groups.append(group)
        result.append(row_groups)
        print(row_groups)

执行后输出结果符合要求:

['aa a1 1', 'bb b1 11', 'cc c1 111']
['aa2 a2 2', 'bb2 b2 22', 'cc2 c2 222']
['aa3 a3 3', 'bb3 b3 33', 'cc3 c3 333']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:45:03