Ignition Jython/Python2读取双分隔符CSV行列不匹配问题求解
修复方案
错误原因
- 原修改后代码仅保留了循环中最后一行数据的拆分结果,
list(parts)会将最后一行的每个列值单独作为一行传入数据集,导致行列数完全不匹配 - 未做列数校验,若存在某行数据字段数和表头不一致,也会触发报错
可直接运行的代码
import csv file_path = r'T:\test1.csv' rows = [] # 先单独处理表头,表头用逗号分隔 with open(file_path, 'r') as f: # 第一行用csv.reader按逗号分隔读表头,兼容带引号包裹的含逗号字段场景 header_reader = csv.reader([f.readline()], delimiter=',') header = header_reader.next() header_len = len(header) # 剩下的行都是制表符分隔,直接逐行处理 for line in f: line = line.strip() if not line: continue # 跳过空行 parts = line.split('\t') # 列数校验,避免报错,可根据需要调整逻辑 if len(parts) != header_len: # 可选:打印异常行方便排查 # print "跳过列数不匹配的行:%s" % line continue rows.append(parts) # 生成数据集赋值给组件 dataset = system.dataset.toDataSet(header, rows) calcwindow.rootContainer.getComponent('Power Table').data = dataset
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

