我有一个python函数,它获取一个名为row的数组。
通常,row包含以下内容:
["Hello","goodbye","green"]
我打印出来:
print "\t".join(row)
不幸的是,有时它包含:
["Hello",None,"green"]
会产生此错误:
TypeError: sequence item 2: expected string or Unicode, NoneType found
有没有一种简单的方法可以用“”替换任何无元素?
答案 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']