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

vy3*_*y32 4 python string

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

通常行包含以下内容:

["Hello","goodbye","green"]
Run Code Online (Sandbox Code Playgroud)

我打印它:

print "\t".join(row)
Run Code Online (Sandbox Code Playgroud)

不幸的是,它有时包含:

["Hello",None,"green"]
Run Code Online (Sandbox Code Playgroud)

哪个会生成此错误:

TypeError: sequence item 2: expected string or Unicode, NoneType found
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法用""替换任何无元素?

Mar*_*ers 11

您可以使用条件表达式:

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

稍微短一点的方法是:

>>> [x or '' for x in l]
Run Code Online (Sandbox Code Playgroud)

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

  • 由于结果将由`str.join`消耗,因此使用生成器表达式而不是列表推导可能会很有意义.考虑在答案的第2行使用圆括号而不是方括号. (2认同)