负值的字符串转换为float

时间:2019-06-25 21:52:25

标签: django python-2.7

我有django / python项目,并且用户输入一个负值作为字符串。但是,当我尝试将字符串转换为浮点数时,会出现错误。

我了解我没有使用连字符或负号,但无法弄清楚如何用负号替换破折号。

import os, sys
from moneyed import Money
from moneyed.localization import format_money


moneystring = str('-$180.00')
print Money(float(moneystring.strip("$").replace(',', '')), 'USD')
  

回溯(最近通话最近):     在第31行的文件“ ./moneytest.py”中       打印Money(float(moneystring.strip(“ $”)。replace(',','')),'USD')   ValueError:无法将字符串转换为float:-$ 180.00

1 个答案:

答案 0 :(得分:0)

您应该使用.replace(..)或其他可以删除字符的东西来删除美元,例如:

moneystring = '-$180.00'
print Money(float(moneystring.replace('$', '').replace(',', '')), 'USD')

这是必需的,因为.strip(..)会删除前导后缀字符。但是对于字符串'-$180.00'$不是 前导或结尾字符。

话虽如此,我强烈建议您不要使用float(..),因为它不准确。 Money内部使用小数。因此,您最好像这样进行处理:

from moneyed import Money, USD

moneystring = '-$180.00'
print Money(moneystring.replace('$', '').replace(',', '')), USD)