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