我有以下数字,我想转换:
'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]
有更好,更清洁的方法吗?
答案 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)
在第二个两个之后摆脱了任何东西。 str
和float
用于类型转换。
答案 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'指定您希望保留的捕获组。