将字符串数组转换为数字

时间:2017-10-10 19:21:05

标签: python

我有array = ["3", "5", "3", "", "1"]。除了""如何将数字转换成数字。在python中一行必须是None?

我尝试过这样的事情:[float(num) for num in array if num != ""]但跳过了#34;"。

4 个答案:

答案 0 :(得分:3)

列表推导中for语句右侧的内容是过滤器表达式。

你想发布一个值,不管是什么,所以你不想要一个过滤器,你想要一个三元表达式

[float(num) if num else None for num in array]

(你可以省略num != "",因为num是一个字符串,而不是一个浮点数或整数,所以它等价且更短)

导致:

[3.0, 5.0, 3.0, None, 1.0]

答案 1 :(得分:0)

简单列表理解:

num_list = [float(e) if e else None for e in map(lambda x: x.strip(), array)]

在转换之前,我们剥离字符串,使其没有前导或尾随空格。

这会将“”映射到“”,然后可以使用if检查。

答案 2 :(得分:0)

你可以试试这个:

array = ["3", "5", "3", "", "1"]

final_list = [int(i) if i else None for i in array]

输出:

[3, 5, 3, None, 1]

答案 3 :(得分:0)

我不确定您是否希望""等于None

如果你想放弃"",那么:

array = ["3", "5", "3", "", "1"]
print [float(x) for x in array if x]
// result: [3.0, 5.0, 3.0, 1.0]

如果您想将""替换为None

array = ["3", "5", "3", "", "1"]
print [float(x) if x else None for x in array]
// result: [3.0, 5.0, 3.0, None, 1.0]