将可能包含None的数组转换为包含""的数组在Python中

4 投票
3 回答
2301 浏览
提问于 2025-04-15 23:18

我有一个Python函数,它会获取一个叫做row的数组。

通常情况下,row里面包含一些这样的东西:

["Hello","goodbye","green"]

然后我用下面的方式把它打印出来:

print "\t".join(row)

不过,有时候它里面会包含:

["Hello",None,"green"]

这就会导致出现这个错误:

TypeError: sequence item 2: expected string or Unicode, NoneType found

有没有简单的方法可以把任何None的元素替换成""(空字符串)呢?

3 个回答

0

你还可以使用内置的过滤函数:

>>> l = ["Hello", None, "green"]
>>> filter(None, l)
['Hello', 'green']
1

你可以用生成器表达式来代替数组:

print "\t".join(fld or "" for fld in row)

这样做会把所有被认为是 False 的东西(比如 None、False、0、0.0、空字符串 '' 等等)替换成空字符串。

11

你可以使用一个条件表达式

>>> l = ["Hello", None, "green"]
>>> [(x if x is not None else '') for x in l]
['Hello', '', 'green']

还有一种稍微简短的方法:

>>> [x or '' for x in l]

不过要注意,第二种方法还会把0和一些其他对象变成空字符串。

撰写回答