Python:从字符串

时间:2017-06-11 18:46:13

标签: python

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

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

1.222.333,44 EUR

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

我希望能够轻松比较这个:

1222333.44

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

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

3 个答案:

答案 0 :(得分:8)

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

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

需要:

  1. 价格期间只是分隔符;
  2. 价格中只有一个逗号,只是小数点;
  3. 价格优先,并通过空格与其他字符串分开。
  4. 如果人们需要更通用的解决方案,hiro protagonist's answer使用locale时,如果您需要一种在编码期间或维护代码时在数字系统之间切换的简单方法,那么{/ 3}}非常有用。

答案 1 :(得分:8)

您可以使用(或任何)locale转换string to a float

space-around

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

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

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

注意:仅将price = '1.222.333,44 EUR' price_float = locale.atof(price.split()[0]) print(price_float) # -> 1222333.44 设置为LC_ALL可能就足够了。

答案 2 :(得分:0)

If your string is "1.222.333,44 EUR"

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

If it is just like this "1.222.333,44"

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