2010-09-12 95 views
0

我有蟒蛇刪除最後一個字符ID

34.00B 
65.89B 
346M 

名單,我需要

34. 
65.89 
.344 

所以,我如何刪除最後一個字符,是當B或M,除M的由1000

+2

這與流量控制有什麼關係? – delnan 2010-09-12 17:24:55

回答

6

我覺得你只是想這樣的事情:

divisors = {'B': 1, 'M': 1000} 
def fn(number): 
    if number[-1] in divisors: 
     return str(float(number[:-1])/divisors[number[-1]]) 
    return number 

map(fn, ['34.00B', '65.89B', '346M']) 

由於您的問題有點不清楚,我將返回值轉換回字符串

+0

如何保持浮動?返回(float(number [: - 1])/ divisors [number [-1]])? – Merlin 2010-09-12 18:16:21

+0

如何使用此功能?我似乎不打印「數字」,TIA – Merlin 2010-09-12 18:25:16

+0

我把因數,「下」FN(號碼):我得到輸出,謝謝 – Merlin 2010-09-12 18:34:29

2

不確定我是否清楚地理解了問題,下面的代碼將刪除最後一個字符並返回float的值(除以1000最後一個字符是'M')。

lst=[ 
    "34.00B", 
    "65.89B", 
    "346M" 
] 

lst=map(lambda x: float(x[:-1]) if x[-1]=='B' else float(x[:-1])/1000, lst) 
print lst 
+2

有時單線不值得... – 2010-09-12 17:39:35

+0

@Ned Batchelder:我剛剛寫了什麼來記住(你必須承認,這很簡單)。沒想到這將很難遵循。不要試圖聰明或任何事情。 – MAK 2010-09-12 17:57:31

+1

我用Python做同樣的事情;如果我不必考慮解決方案,而只是自動輸入解決方案,它往往會變成一條長長的路線 – 2010-09-12 17:58:31