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