python - 将字符串解析为具有不同分隔符的 float

标签 python numbers floating-point

我有许多表示数字的字符串,它们使用逗号或点来分隔千位并具有不同的 float 分隔符。例如:

"22 000,76", "22.000,76", "22,000.76", "1022000,76", "-1,022,000.76", "1022000", "22 000,76$", "$22 000,76"

如何在 Python 中将它们转换为 float ?

在 PHP 中,我使用这样的函数:http://docs.php.net/manual/sr/function.floatval.php#84793

最佳答案

import re
import locale

# Remove anything not a digit, comma or period
no_cruft = re.sub(r'[^\d,.-]', '', st)

# Split the result into parts consisting purely of digits
parts = re.split(r'[,.]', no_cruft)

# ...and sew them back together
if len(parts) == 1:
    # No delimeters found
    float_str = parts[0]
elif len(parts[-1]) != 2:
    # >= 1 delimeters found. If the length of last part is not equal to 2, assume it is not a decimal part
    float_str = ''.join(parts)
else:
    float_str = '%s%s%s' % (''.join(parts[0:-1]),
                            locale.localeconv()['decimal_point'],
                            parts[-1])

# Convert to float
my_float = float(float_str)

关于python - 将字符串解析为具有不同分隔符的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227335/

相关文章:

Java - PHP 数字类型混淆 (9966006699)

javascript - 在 JavaScript 中减去指数

c - 带浮点的 scanf() 的最大字段宽度

python - 当我尝试将模块安装到另一个 virtualenv 中时,PIP 会提示

python - Python 中多处理的同步问题,双 for 循环

C++如何输出小数点后至少一位的数字

javascript - JSON.parse 对于负 float 失败

C++ STL make_heap 和priority_queue 给出不同的输出

python - 是否可以将 clojure 语法转换为 python 语法?

python - anaconda3 graphviz - ModuleNotFoundError : No module named 'pygraphviz'