2024-03-28 14:15:24 发布
网友
我需要找到一种在python中转换以下字符串的方法:
0.000 => 0 0 => 0 123.45000 => 123.45 0000 => 0 123.4506780 => 123.450678
等等。我尝试了.rstrip('0').rstrip('.'),但如果输入为0或00,则此操作不起作用。
有什么想法吗?谢谢!
对于浮点数,只需将字符串转换为float:
float
>>> float('123.4506780') 123.450678
对于零值,可以将其转换为整数:
>>> int('0000') 0
打印时,数值将自动转换为字符串。如果您需要这些字符串,您可以简单地使用str()将它们转换回字符串,例如:
str()
>>> str(float('123.4506780')) '123.450678'
如果需要,可以使用format strings,但请注意,可能需要设置所需的精度,因为默认情况下,格式字符串对此有自己的逻辑。Janneb建议在another answer中精确到17。
'{:g}'.format(float(your_string_goes_here))
不过,在考虑了更多之后,我认为最简单和最好的解决方案是将字符串转换两次(作为jathanism suggests):
str(float(your_string_goes_here))
编辑:由于评论而添加了澄清。
已更新通用化以保持精度并处理未显示的值:
import decimal import random def format_number(num): try: dec = decimal.Decimal(num) except: return 'bad' tup = dec.as_tuple() delta = len(tup.digits) + tup.exponent digits = ''.join(str(d) for d in tup.digits) if delta <= 0: zeros = abs(tup.exponent) - len(tup.digits) val = '0.' + ('0'*zeros) + digits else: val = digits[:delta] + ('0'*tup.exponent) + '.' + digits[delta:] val = val.rstrip('0') if val[-1] == '.': val = val[:-1] if tup.sign: return '-' + val return val # test data NUMS = ''' 0.0000 0 0 0 123.45000 123.45 0000 0 123.4506780 123.450678 0.1 0.1 0.001 0.001 0.005000 0.005 .1234 0.1234 1.23e1 12.3 -123.456 -123.456 4.98e10 49800000000 4.9815135 4.9815135 4e30 4000000000000000000000000000000 -0.0000000000004 -0.0000000000004 -.4e-12 -0.0000000000004 -0.11112 -0.11112 1.3.4.5 bad -1.2.3 bad ''' for num, exp in [s.split() for s in NUMS.split('\n') if s]: res = format_number(num) print res assert exp == res
输出:
0 0 123.45 0 123.450678 0.1 0.001 0.005 0.1234 12.3 -123.456 49800000000 4.9815135 4000000000000000000000000000000 -0.0000000000004 -0.0000000000004 -0.11112 bad bad
对于浮点数,只需将字符串转换为
float
:对于零值,可以将其转换为整数:
打印时,数值将自动转换为字符串。如果您需要这些字符串,您可以简单地使用
str()
将它们转换回字符串,例如:如果需要,可以使用format strings,但请注意,可能需要设置所需的精度,因为默认情况下,格式字符串对此有自己的逻辑。Janneb建议在another answer中精确到17。
不过,在考虑了更多之后,我认为最简单和最好的解决方案是将字符串转换两次(作为jathanism suggests):
编辑:由于评论而添加了澄清。
已更新通用化以保持精度并处理未显示的值:
输出:
相关问题 更多 >
编程相关推荐