kit*_*tty 4 python string decimal-point python-2.7
我正在使用Python 2.7。我需要更换"0"
末尾的字符串。
比如说,a =“2.50”:
a = a.replace('0', '')
Run Code Online (Sandbox Code Playgroud)
我得到 a = 2.5,我对这个结果很满意。
现在a =“200”:
a = a.replace('0', '')
Run Code Online (Sandbox Code Playgroud)
我得到 a = 2,这个输出是按照我同意的设计的。但我预计输出 a = 200。
其实我正在寻找的是
当末尾小数点后的任何值
"0"
替换"0"
为 None 值时。
以下是示例,我期待结果。
IN: a = "200"
Out: a = 200
In: a = "150"
Out: a = 150
In: a = 2.50
Out: a = 2.5
In: a = "1500"
Out: a = 1500
In: a = "1500.80"
Out: a = 1500.8
In: a = "1000.50"
Out: a = 1000.5
Run Code Online (Sandbox Code Playgroud)
不是一个值是字符串。
注意:有时a = 100LL
或a = 100.50mt
.
您可以使用正则表达式来执行此操作:
import re
rgx = re.compile(r'(?:(\.)|(\.\d*?[1-9]\d*?))0+(?=\b|[^0-9])')
b = rgx.sub('\2',a)
Run Code Online (Sandbox Code Playgroud)
其中b
是 去除小数点后尾零的结果a
。
我们可以将其写在一个很好的函数中:
import re
tail_dot_rgx = re.compile(r'(?:(\.)|(\.\d*?[1-9]\d*?))0+(?=\b|[^0-9])')
def remove_tail_dot_zeros(a):
return tail_dot_rgx.sub(r'\2',a)
Run Code Online (Sandbox Code Playgroud)
现在我们可以测试一下:
>>> remove_tail_dot_zeros('2.00')
'2'
>>> remove_tail_dot_zeros('200')
'200'
>>> remove_tail_dot_zeros('150')
'150'
>>> remove_tail_dot_zeros('2.59')
'2.59'
>>> remove_tail_dot_zeros('2.50')
'2.5'
>>> remove_tail_dot_zeros('2.500')
'2.5'
>>> remove_tail_dot_zeros('2.000')
'2'
>>> remove_tail_dot_zeros('2.0001')
'2.0001'
>>> remove_tail_dot_zeros('1500')
'1500'
>>> remove_tail_dot_zeros('1500.80')
'1500.8'
>>> remove_tail_dot_zeros('1000.50')
'1000.5'
>>> remove_tail_dot_zeros('200.50mt')
'200.5mt'
>>> remove_tail_dot_zeros('200.00mt')
'200mt'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6907 次 |
最近记录: |