将字符串转换为修改数字

时间:2014-12-30 22:13:25

标签: python

我有以下数字,我想转换:

'2.44' --> '2.44'
'12.83' --> '2.83'
'121.834' --> '1.83'

换句话说,我希望小数点左边有1位数字,右边有两位数字。最好的方法是什么?我目前的方法是使用:

number = '41.33'
index = number.index('.')
result = number[index-1] + '.' + number[index+1:index+3]

有更好,更清洁的方法吗?

7 个答案:

答案 0 :(得分:11)

result = number[index - 1: index + 3]

全部是

答案 1 :(得分:8)

您可以使用正则表达式:

>>> print(re.search(r'\d\.\d\d', '121.834').group())
1.83

答案 2 :(得分:3)

您可以使用round函数和模运算。

result = str(round(float(number) % 10, 2))

快速解释:float(number) % 10在第一个数字之前删除任何内容。 round(x, 2)在第二个两个之后摆脱了任何东西。 strfloat用于类型转换。

答案 3 :(得分:1)

left, dot, right = number.partition('.')
result = left[-1:] + dot + right[:2]

答案 4 :(得分:0)

a=[2.44,12.83,121.834]
for x in a:
    print (re.search('\d\.\d\d', '{}'.format(x)).group())

输出:

>>> 
2.44
2.83
1.83
>>> 

这就是我要写的东西,罗宁如何给出答案。

答案 5 :(得分:0)

result = round(float(number[index-1:]),2)

答案 6 :(得分:0)

这是一个使用re.sub:

的方法
print(re.sub('^.*?(.\..*)', r'\1', string))

r'\ 1'指定您希望保留的捕获组。