使用xlrd读取Excel值后转换为整数/整数列表的方法
可行实现方法
在读取单元格值的环节加一层类型判断与转换逻辑,就能同时覆盖单值转整数、多值转整数列表两种场景,无需调整原有矩阵M的初始化逻辑。
核心处理规则
对从Excel读出的原始值按类型分类处理:
- 原始值为int/float类型(无逗号分隔的单值场景):直接强制转为整数类型
- 原始值为str类型(带逗号分隔的多值场景):按逗号拆分字符串,对每个拆分片段去除首尾空白后逐个转为整数,拼接为整数列表
可直接复用的代码
先把解析逻辑封装成独立小函数,放在循环外部即可:
def parse_cell_value(raw_val): # 纯数值单值场景:直接转整数 if isinstance(raw_val, (int, float)): return int(raw_val) # 逗号分隔的字符串场景:拆分转整数列表 if isinstance(raw_val, str): return [int(segment.strip()) for segment in raw_val.split(",") if segment.strip()] # 空值兜底返回0 return 0
将原代码中读取单元格值的赋值行替换为调用该函数,即可完成类型转换:
M = [[0]* n[i] for i in range(nJobs)] iter_i = 0 for i in range(nJobs): if i != 0: iter_i = iter_i+n[i-1] for j in range(n[i]): # 读取单元格原始值 raw_cell_val = DataSheet.cell(5 + j + iter_i, 5).value # 自定义解析逻辑完成类型转换 M[i][j] = parse_cell_value(raw_cell_val)
适配说明
- 无需手动判断M[i][j]对应单元格是单值还是多值,解析逻辑会自动根据值的类型返回整数或者整数列表
- 兼容数值前后带空格、分隔逗号前后带空格的格式,比如
" 5 , 8 , 12 "这类内容也能正常解析 - 如果需要处理Excel中的脏数据(比如单元格夹杂非数字内容),可以在转int环节增加异常捕获,避免程序中断
内容的提问来源于stack exchange,提问作者Yan H.
相关产品推荐
相关产品推荐

