You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:31:01