2010-09-12 56 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