round integers how ejemplo aprox python locale decimal-point

python - integers - convertir la marca decimal



python truncate double to int (5)

Tengo un archivo CSV con lectura de datos que quiero leer en Python. Obtengo listas que contienen cadenas como "2,5" . Ahora hacer float("2,5") no funciona, porque tiene la marca decimal incorrecta.

¿Cómo leo esto en Python como 2.5 ?


Intenta reemplazar todas las comas decimales con puntos decimales:

floatAsStr = "2,5" floatAsStr = floatAsStr.replace(",", "."); myFloat = float(floatAsStr)

La función replace , por supuesto, funciona en cualquier subcadena, ya que Python ahora distingue entre caracteres y cadenas.


Puede hacerlo de forma localizada:

import locale # Set to users preferred locale: locale.setlocale(locale.LC_ALL, '''') # Or a specific locale: locale.setlocale(locale.LC_NUMERIC, "en_DK.UTF-8") print locale.atof("3,14")

Lea this sección antes de usar este método.


usar un regex será más confiable

import re decmark_reg = re.compile(''(?<=/d),(?=/d)'') ss = ''abc , 2,5 def ,5,88 or (2,5, 8,12, 8945,3 )'' print ss print decmark_reg.sub(''.'',ss)

resultado

abc , 2,5 def ,5,88 or (2,5, 8,12, 8945,3 ) abc , 2.5 def ,5.88 or (2.5, 8.12, 8945.3 )

Si desea tratar casos más complejos (números sin dígitos antes de la marca decimal, por ejemplo), la expresión regular que elaboré para detectar todos los tipos de números en el siguiente hilo puede ser de su interés:

.com/questions/5917082/regular-expression-to-match-numbers-with-or-without-commas-and-decimals-in-text/5929469



float("2,5".replace('','', ''.'')) en la mayoría de los casos

Si el value es un número grande y . ha sido utilizado por miles, usted puede:

Reemplace todas las comas por puntos: value.replace(",", ".")

Eliminar todos menos el último punto: value.replace(".", "", value.count(".") -1)