Python将字符串转换为浮点错误,带负数

时间:2017-07-23 20:31:33

标签: python string python-3.x floating-point

如何将存储为字符串的负数转换为浮点数?

我在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'

2 个答案:

答案 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)