Python逐行读取CSV仅保留前4个字段丢弃剩余内容的实现问题
问题分析
你原代码的问题集中在以下几点:
- 语法错误:Python 中中断循环的关键字是小写
break,你写的大写Break会直接抛出语法错误 - 分隔逻辑错误:你的数据主体分隔符是空白符,多余内容才以逗号开头,直接按逗号拆分完全不符合数据格式,自然得不到预期结果
- 逻辑漏洞:没有先移除逗号后缀的多余内容,拆分后无法过滤冗余字段
实现方案
核心思路:所有多余内容都以逗号为起始标识,先截取每行第一个逗号之前的内容,再按空白符拆分取前4个字段即可,代码如下:
entries = [] # 用with上下文管理器打开文件,自动处理资源释放 with open('替换为你的CSV文件路径', 'r', encoding='utf-8') as f: for line in f: # 去除首尾空白字符 line = line.strip() # 跳过空行 if not line: continue # 找到第一个逗号的位置,截取逗号前的内容,没有逗号则保留整行 comma_idx = line.find(',') if comma_idx != -1: line = line[:comma_idx].strip() # 按空白符拆分,仅保留前4个字段 fields = line.split()[:4] entries.append(fields) print(entries)
输出验证
运行后得到的结果完全符合需求:
[ ['1', 'DateTime', 'Temp'], ['2', '02/11/2021', '0:00', '35'], ['3', '04/11/2021', '0:00', '32'], ['4', '05/11/2021', '0:00', '34'], ['5', '06/11/2021', '0:00', '28'], ['6', '07/11/2021', '0:00', '27.5'], ['7', '08/11/2021', '0:00', '25.6'], ['8', '09/11/2021', '0:00', '23.7'], ['9', '10/11/2021', '0:00', '21.8'] ]
内容的提问来源于stack exchange,提问作者N K
相关产品推荐
相关产品推荐

