在一些Python(v3)代码中,我从用户输入创建Decimals列表,如下所示:
input = [] # later populated with strings by user with values like '1.45984000E+001'
decimals = [Decimal(c) for c in input]
但是,有时输入列表包含无法解析的字符串。在调用构造函数之前,如何测试c是否可以表示为小数?
答案 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循环,那就这样吧。