Python ValueError:无法将空字符串转为浮点数问题排查
解决ValueError:无法将空字符串转为float的问题
你的问题出在split('/')后得到的列表里包含空字符串,直接遍历转float就会报错。strip()没用是因为空字符串不是由空格产生的,而是连续斜杠分割出来的,所以得换个方式处理。
给你两种可行的修改方案:
方案一:直接提取第一个有效元素(最简洁)
既然你只需要每个vertex里的第一个数字(比如1//里的1),完全不用处理后面的空字符串,直接取split('/')后的第一个元素即可:
import numpy as np _DT = np.float32 # 替换成你实际定义的_DT类型 line = 'f 1// 2// 3// 4//' vertices = [] toks = line.split(" ")[1:] for vertex in toks: # 提取第一个斜杠前的内容,按需转成目标类型 pos_str = vertex.split('/')[0] # 如果需要字符串形式的结果,直接append(pos_str)即可 position = np.array(float(pos_str)).astype(_DT) vertices.append(position) print(vertices)
方案二:过滤空字符串后再处理
如果需要保留对整个分割列表的处理逻辑,可以在转float前先过滤掉空字符串:
import numpy as np _DT = np.float32 line = 'f 1// 2// 3// 4//' vertices = [] toks = line.split(" ")[1:] for vertex in toks: l = vertex.split("/") # 只保留非空字符串,再转float l_valid = [float(x) for x in l if x] l = np.array(l_valid).astype(_DT) position = l[0] vertices.append(position) print(vertices)
两种方案都能解决报错,若你需要的是纯字符串形式的['1','2','3','4'],去掉转float和numpy数组的步骤,直接append分割后的第一个字符串即可。
内容的提问来源于stack exchange,提问作者Aki Bad
相关产品推荐
相关产品推荐

