将可能包含None的数组转换为包含""的数组在Python中
我有一个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和一些其他对象变成空字符串。