领先零后的逗号

时间:2017-10-14 08:51:51

标签: python python-3.x

期望的结果(浮动中的最终值):

00→0.0

20→20.0

15→15.0

05→0.5

003→0.03

01→0.1

我该怎么做呢?初始值是一个字符串,但是当我将其转换为float时,零会消失。是否有任何预制功能?

5 个答案:

答案 0 :(得分:1)

使用正则表达式很容易做到这一点。

In [1]: import re

In [2]: def reformat_numbers(num):
   ...:     return float(re.sub('^0', '0.', num))
   ...: 

In [3]: [reformat_numbers(n) for n in ['00', '20', '15', '05', '003', '01']]
Out[6]: [0.0, 20.0, 15.0, 0.5, 0.03, 0.1]

答案 1 :(得分:1)

另一个处理异常的简单实现:

X.py

输出:

import math
x = ['00', '20', '15', '05', '003', '01', '0']

def convert_to_float(val):
    try:
        if val[0] == '0':
            if len(val[1:]) > 0:
                decimal_part = float(val[1:])
                val = decimal_part / math.pow(10, len(val[1:]))
            else:
                val = 0.0
        else:
            val = float(val)
    except ValueError:
        print('Not a number')
    return val

for val in x:
    print(convert_to_float(val))

答案 2 :(得分:0)

从您的示例中,您似乎可以在第一个char之后添加一个小数,然后将其转换为float。 E.g。

my_num = '002'
my_num = float(my_num[0] +  '.' + my_num[1:])

与铸造时一样,将其包装在try /中,除非输入不可浇铸。

答案 3 :(得分:0)

我不确定你要做什么,因为你没有说明,只有例子。但这有效:

for num in ("00", "20", "15", "05", "003", "01"):
    if num[0] == '0':
        print('0.' + num[1:])
    else:
        print(num + '.0')

测试:

$ python3 convert.py 
0.0
20.0
15.0
0.5
0.03
0.1

答案 4 :(得分:-1)

你可以使用float。

例如:

a =“20”

y = float(a)