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

Python中_csv.reader无split属性错误及TSV文件求和实现问询

解决TSV文件读取、首行打印及列求和问题

先帮你拆解下当前代码的问题:

  • 你错误地遍历了原始文件对象inputfile,而非csv.reader生成的dataArray;而且csv.reader已经帮你把每行按制表符拆成了列表,根本不需要再调用split方法——这就是你遇到AttributeError: '_csv.reader' object has no attribute 'split'的核心原因。
  • 另外,你用next(inputfile)直接跳过了首行,但你的需求是打印首行,这一步逻辑完全搞反了。

下面是修正后的完整代码,我会分两种场景给出方案,你可以根据自己的TSV结构选择:

场景1:按列索引求和(适合无明确表头的TSV)

假设你要对**第二列(Python索引为1)**的数值求和:

import csv

# 确保你的filePath和fileName变量已经提前定义
full_path = filePath + fileName

with open(full_path, 'rt') as inputfile:
    # 先读取并打印首行
    header_line = next(inputfile)
    print(header_line.strip())  # strip()用来去掉行尾的换行符
    
    # 初始化TSV读取器,指定制表符为分隔符
    tsv_reader = csv.reader(inputfile, delimiter='\t')
    
    # 初始化求和变量
    total = 0
    
    # 遍历处理每一行数据
    for row in tsv_reader:
        # 跳过空行,避免索引报错
        if not row:
            continue
        try:
            # 把目标列的内容转为浮点数(如果是整数可以用int())
            num = float(row[1])
            total += num
        except ValueError:
            # 遇到非数值内容时跳过,并打印提示(可选)
            print(f"跳过非数值行:{row}")
    
    # 打印最终求和结果
    print(f"目标列的总和:{total}")

场景2:按列名求和(适合带明确表头的TSV)

如果你的TSV首行是表头,用DictReader会更直观,不需要记列的索引:

import csv

full_path = filePath + fileName

with open(full_path, 'rt') as inputfile:
    # 用DictReader读取,每行数据会被转为字典,键就是表头名
    tsv_reader = csv.DictReader(inputfile, delimiter='\t')
    
    # 打印表头(用制表符拼接还原TSV格式)
    print("\t".join(tsv_reader.fieldnames))
    
    total = 0
    # 替换成你要求和的列的真实表头名
    target_column = "数值列"
    
    for row in tsv_reader:
        try:
            num = float(row[target_column])
            total += num
        except (ValueError, KeyError):
            # 处理非数值或列名不存在的情况
            print(f"跳过无效行:{row}")
    
    print(f"{target_column}的总和:{total}")

关键注意点:

  • 如果要求和的是其他列,只需要修改场景1中的row[1]索引,或者场景2中的target_column列名即可。
  • 加入try-except块是为了避免遇到非数值内容时程序崩溃,你可以根据实际需求决定是否保留这部分逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:31:56