Python使用map(float)转换字符串报错:无法将含特殊减号的字符串转为float
问题原因
- 存在非标准负号:你输入字符串中的
−是Unicode长减号,不是Pythonfloat()支持的标准ASCII负号-(即键盘上数字0右侧的短横线) - 分割后元素带多余空格:按逗号切割后的字符串前后存在未处理的空白字符,比如报错信息里的
' −1.3'开头就有空格,也会导致转换失败。
修复代码
num_str = '''2.0, 1.1, 4.4, -3.1, −1.3, 3.9, 3.2 , −1.6 , 3.5 1.2, 2.5, 2.3, 1.9, 1.8, 2.9, −0.3, −2.4''' num_list = [ float(s.strip().replace('−', '-')) for s in num_str.replace('\n', ',').split(',') if s.strip() ]
代码说明
- 先把所有Unicode长减号批量替换为标准负号
- 对每个切割后的子字符串执行
strip()去除前后空白 - 通过
if s.strip()过滤空字符串,避免连续逗号、首尾逗号产生的空元素导致转换报错。
内容的提问来源于stack exchange,提问作者vhd
相关产品推荐
相关产品推荐

