如何将存储为字符串的负数转换为浮点数?
我在Python 3.6上遇到此错误,并且不知道如何克服它。
>>> s = '–1123.04'
>>> float(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: '–1123.04'
答案 0 :(得分:14)
您的字符串包含unicode en-dash,而不是ASCII连字符。你可以替换它:
>>> float('–1123.04'.replace('\U00002013', '-'))
-1123.04
答案 1 :(得分:0)
对于更通用的解决方案,可以使用正则表达式(regex)将所有非ASCII字符替换为连字符。
import re
s = '–1123.04'
s = re.sub(r'[^\x00-\x7F]+','-', s)
s = float(s)