我正在寻找将Python中所有非数字数据(包括空白)转换为零的最简单方法。以以下为例:
someData = [[1.0,4,'7',-50],['8 bananas','text','',12.5644]]
我希望输出如下:
desiredData = [[1.0,4,7,-50],[0,0,0,12.5644]]
因此,“ 7”应为7,但“ 8香蕉”应转换为0。
import numbers
def mapped(x):
if isinstance(x,numbers.Number):
return x
for tpe in (int, float):
try:
return tpe(x)
except ValueError:
continue
return 0
for sub in someData:
sub[:] = map(mapped,sub)
print(someData)
[[1.0, 4, 7, -50], [0, 0, 0, 12.5644]]
它将适用于不同的数字类型:
In [4]: from decimal import Decimal
In [5]: someData = [[1.0,4,'7',-50 ,"99", Decimal("1.5")],["foobar",'8 bananas','text','',12.5644]]
In [6]: for sub in someData:
...: sub[:] = map(mapped,sub)
...:
In [7]: someData
Out[7]: [[1.0, 4, 7, -50, 99, Decimal('1.5')], [0, 0, 0, 0, 12.5644]]
if isinstance(x,numbers.Number)
捕获已经是浮点数,整数等的子元素。如果它不是数字类型,我们首先尝试将其转换为整数然后再浮点数,如果这些都不成功,我们只需返回0
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句