繁体   English   中英

Python:从String中提取数字

[英]Python: extract number from String

我是Python的新手,我试图获得一个“价格标签字符串”以转换成浮点数,因此我可以轻松地将结果与其他价格进行比较。 我搜索了2个小时来寻找这个“简单问题”的答案,但是没有一个符合我的需求。

基本上,我的价格是这样的:

1.222.333,44 EUR

(逗号和句号交换,因为我住在德国,这也很烦人)

我希望得到这个以便于比较:

1222333.44

主要想法是比较价格,这是我的学校项目。
我曾经用PHP做过一切,但是效果太慢了。

如果您有更优雅或简单的方式,请告诉我。

这项工作针对您提供的具体案例:

float(s.replace('.', '').replace(',', '.').split(' ')[0])

这个需要:

  1. 价格期间只是分隔符;
  2. 价格只有一个逗号,只是一个小数点;
  3. 价格是第一个,并通过空格与其他字符串分开。

仅举一例,如果人们需要更通用的解决方案,当您需要一种简单的方法在编码期间或维护代码时在数字系统之间切换时, hiro主角使用locale 的答案非常有用。

您可以使用您的(或任何) 语言环境字符串转换为float

import locale
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')
print(locale.atof('1.222.333,44'))  # -> 1222333.44

根据您的默认语言环境,您甚至可能不必指定语言环境。

在您的情况下,您可能需要将货币(EUR)部分split

price = '1.222.333,44 EUR'
price_float = locale.atof(price.split()[0])
print(price_float) # -> 1222333.44

注意:将LC_ALL设置为您需要的LC_NUMERIC可能就足够了。

如果你的字符串是“1.222.333,44 EUR”

prince = "1.222.333,44 EUR"
price = price[:-4]
price = price.replace(".","").replace(",",".")
floatprice = float(price)

如果它就像这样“1.222.333,44”

floatprice = float("1.222.333,44".replace(".","").replace(",","."))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM