测试值是否为十进制

时间:2010-03-07 21:56:38

标签: python decimal

在一些Python(v3)代码中,我从用户输入创建Decimals列表,如下所示:

input = [] # later populated with strings by user with values like '1.45984000E+001'
decimals = [Decimal(c) for c in input]

但是,有时输入列表包含无法解析的字符串。在调用构造函数之前,如何测试c是否可以表示为小数?

2 个答案:

答案 0 :(得分:3)

捕捉异常

decimals = []
for s in input:
    try: decimals.append(Decimal(s))
    except InvalidOperation:
        pass

使用帮助函数

from itertools import imap

def parse_decimal(s):
    try: return Decimal(s)
    except InvalidOperation:
        return None

decimals = [d for d in imap(parse_decimal, input) if d is not None]

答案 1 :(得分:0)

别。捕获构造函数抛出的异常。如果这意味着将列表理解转换为for循环,那就这样吧。