Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从字符串中提取数字_Python - Fatal编程技术网

Python:从字符串中提取数字

Python:从字符串中提取数字,python,Python,我是Python新手,我试图将一个“价格标签字符串”转换成一个float,这样我就可以轻松地将结果与其他价格进行比较。 我花了两个小时寻找这个“简单问题”的答案,但没有一个符合我的需要 所以基本上,我有这样一个价格: 1.222.333,44 EUR (逗号和句点互换了,因为我住在德国,这也很烦人) 为了便于比较,我想得到这个: 1222333.44 主要目的是比较价格,这是我的学校项目。 我以前用php做任何事情,虽然很管用,但速度太慢了 如果您有更优雅或简单的方法,请让我知道。这项工作适

我是Python新手,我试图将一个“价格标签字符串”转换成一个float,这样我就可以轻松地将结果与其他价格进行比较。 我花了两个小时寻找这个“简单问题”的答案,但没有一个符合我的需要

所以基本上,我有这样一个价格:

1.222.333,44 EUR
(逗号和句点互换了,因为我住在德国,这也很烦人)

为了便于比较,我想得到这个:

1222333.44
主要目的是比较价格,这是我的学校项目。
我以前用php做任何事情,虽然很管用,但速度太慢了


如果您有更优雅或简单的方法,请让我知道。

这项工作适用于您提供的特定案例:

float(s.replace('.', '').replace(',', '.').split(' ')[0])
它要求:

  • 价格周期只是分隔符
  • 价格只有一个逗号,只是一个小数点
  • 价格首先出现,并用空格与其他字符串隔开
  • 为了防止人们需要更通用的解决方案,当您在编码或维护代码时需要在数字系统之间切换的简单方法时,使用
    locale
    非常有用。

    您可以使用(或任意)转换:

    根据您的默认区域设置,您甚至不必指定区域设置

    在您的情况下,您可能需要删除货币(欧元)部分:

    price = '1.222.333,44 EUR'
    price_float = locale.atof(price.split()[0])
    print(price_float) # -> 1222333.44
    
    注意:如果您的字符串为“1.222.333,44欧元”

    如果它就是这样的“1.222.333,44”


    比什么更优雅?您没有发布解决方案。可能是的副本
    price = '1.222.333,44 EUR'
    price_float = locale.atof(price.split()[0])
    print(price_float) # -> 1222333.44
    
    prince = "1.222.333,44 EUR"
    price = price[:-4]
    price = price.replace(".","").replace(",",".")
    floatprice = float(price)
    
    floatprice = float("1.222.333,44".replace(".","").replace(",","."))