2014-11-25 41 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'