我试图将一些用户输入清理为只有数字和小数点的有效浮点类型。
我发现了这种方法
def to_numeric(s):
try:
s = str(s).strip()
if s is None or len(s) < 1:
return None
else:
s = ''.join(filter(lambda x: x in '.0123456789', str(s)))
if s is None or len(s) < 1:
return None
else:
s = float(s)
return s
except ValueError as detail:
return None
except Exception as detail:
return None
但是浮动的演员抱怨
float()参数必须是字符串或数字,而不是'filter'
如何从过滤器中取回字符串?
答案 0 :(得分:3)
filter
返回一个迭代,为该情况产生单个字符(它遍历字符串并产生可接受的字符)。尝试使用''.join
让它们以字符串形式返回:
s = ''.join(filter(lambda x: x in '.0123456789', str(s)))
s = float(s)
答案 1 :(得分:0)
使用
s = float("".join(s))
而不是
s = float(s)
在Python 3中,filter
返回一个迭代器,float期望str