Python处理CSV文件报错ValueError: could not convert string to float: '.' 求助
错误根因
- 未对CSV文件的每行内容按分隔符(通常为逗号
,)拆分,直接遍历字符串的单个字符进行转换:例如行内容为0.089,23时,直接遍历会得到'0'、'.'、'0'、'8'、'9'、','、'2'、'3',遇到单独的.字符时自然无法转换为float类型。 - 函数定义的
filename形参未被实际使用,open方法内写死了文件路径,调用时传入的路径参数不会生效。
修复方案
建议使用Python内置的csv模块处理CSV文件,避免手动处理分隔符、换行符等边界问题,修复后代码如下:
import csv def loadCsv(filename): dataset = [] with open(filename, 'r', encoding='utf-8') as f: csv_reader = csv.reader(f) # 跳过表头行 next(csv_reader) for row in csv_reader: # 对拆分后的每个单元格值先去除首尾空白,再转换为float dataset.append([float(x.strip()) for x in row]) return dataset
如果你的CSV中存在用单独.表示空值的情况,可以额外增加判断逻辑处理异常值,示例如下:
dataset.append([float(x.strip()) if x.strip() != '.' else 0.0 for x in row])
你可以根据实际需求替换上述代码中的0.0为其他默认值,或者增加空值过滤逻辑。
内容的提问来源于stack exchange,提问作者Jaime
相关产品推荐
相关产品推荐

