2014-11-25 102 views
1

字符串中删除货币符号和文字我有这样的例子:从价格普遍的解决方案

USD 10.99

LIR10.99

$ 10.99

$ 10.99

所以输入数据可能是任何'symbolfloat'或's ymbol浮动'。

我做了这样的事情:

float((str(param[2]).translate(None, '$USDLIR'))) 

但它可以是任何世界货币,所以它必须是一个通用型变频器。

+0

第一个数字之前删除一切吗? – 2014-11-25 13:41:32

+0

def price_convert(_price): return float(sub(r'[^ 0-9。]','',_price)) – 2014-11-25 13:44:12

回答

3

从不是一个数字或小数点字符串中删除任何东西:

import re 
import locale 
decimal_point_char = locale.localeconv()['decimal_point'] 
clean = re.sub(r'[^0-9'+decimal_point_char+r']+', '', str(param[2])) 
value = float(clean) 

这也将处理分组($ 1,000.00)和不同的语言环境。

+1

请不要命名变量'input',这让我很害怕。 – ch3ka 2014-11-25 13:46:17

+0

是的,我知道Python有一个'input()'函数。但我也相信,我应该能够命名我的局部变量,因为我认为合适:-) – 2014-11-25 13:50:55

+0

好吧,那么更好的希望你永远不会想命名你的本地变量'__builtins__'或类似的东西) – ch3ka 2014-11-25 13:53:40

1

我只是找到了一个解决方案:

def price_convert(_price): 
    return float(sub(r'[^0-9.]', '', _price)) 
4

您可以删除以外的所有号码(包括逗号或小数点点):

import re 
trim = re.compile(r'[^\d.,]+') 
mystring = 'USD 10.99' 
result = trim.sub('', mystring) 
print(result) 
# '10.99'