使用Python加载CSV遇ValueError:无法转换带的字符串为float64
解决CSV加载时的BOM编码问题
你遇到的是UTF-8编码的字节顺序标记(BOM)——Excel保存CSV时会自动添加这个标记,但numpy的loadtxt默认不识别它,把它当成了数值的一部分,导致无法转成浮点数。
给你三个可行的解决办法:
直接在loadtxt里指定编码:
修改加载代码,加上encoding='utf-8-sig'参数,这个编码会自动忽略BOM:data = numpy.loadtxt(experiment["csv"], delimiter=",", encoding='utf-8-sig')手动读取文件后再加载:
如果CADET对loadtxt的封装没法直接加参数,先手动用正确编码打开文件,再传给numpy:import numpy as np with open(experiment["csv"], 'r', encoding='utf-8-sig') as f: data = np.loadtxt(f, delimiter=",")重新保存CSV文件(无BOM):
用Notepad++这类编辑器打开CSV,点击顶部菜单栏的「编码」→「转为UTF-8无BOM编码格式」,保存后再用代码加载就不会有问题了。
内容的提问来源于stack exchange,提问作者HCurtis
相关产品推荐
相关产品推荐

