Tengo proyecto Django / Python, y un usuario entra en un valor negativo como una cadena. Pero cuando intento convertir la cuerda a un flotador, recibo un error.

Entiendo que no estoy usando el guión o el símbolo negativo, pero no puedo averiguar cómo reemplazar el tablero con un símbolo negativo.

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


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

TraceBack (último llamado más reciente): Archivo "./moneytest.py", línea 31, en Imprimir Dinero (Float (MoneyString.Strip ("$"). Reemplace (',', '')), 'USD') ValueError: No se pudo convertir la cadena para flotar: - $ 180.00

1
edom 26 jun. 2019 a las 00:52

1 respuesta

La mejor respuesta

Debe usar .replace(..) o algo más que pueda eliminar caracteres para eliminar el dólar, como:

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

Esto es necesario, ya que .strip(..) elimina líderes y arrastrando . Pero para la cadena '-$180.00', $ es no un carácter líder o final.

Dicho esto, le aconsejo fuertemente que usted es no para usar float(..), ya que es exprecial. Money usa internamente un decimal. Así que mejor procesas esto como:

from moneyed import Money, USD

moneystring = '-$180.00'
print Money(moneystring.replace('$', '').replace(',', '')), USD)
0
Willem Van Onsem 25 jun. 2019 a las 21:54