将可能包含None的数组更改为python中包含“”的数组

时间:2010-05-28 20:30:43

标签: python string

我有一个python函数,它获取一个名为row的数组。

通常,row包含以下内容:

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

我打印出来:

print "\t".join(row)

不幸的是,有时它包含:

["Hello",None,"green"]

会产生此错误:

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

有没有一种简单的方法可以用“”替换任何无元素?

3 个答案:

答案 0 :(得分:11)

您可以使用conditional expression

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

稍微短一点的方法是:

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

但请注意,第二种方法也会将0和其他一些对象更改为空字符串。

答案 1 :(得分:1)

您可以使用生成器表达式代替数组:

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

这会将空字符串替换为False的所有内容(无,False,0,0.0,''...)。

答案 2 :(得分:0)

您还可以使用内置过滤功能:

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