Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将可能不包含的数组更改为包含&引用;用python_Python_String - Fatal编程技术网

将可能不包含的数组更改为包含&引用;用python

将可能不包含的数组更改为包含&引用;用python,python,string,Python,String,我有一个python函数,它获取一个名为row的数组 通常,行包含以下内容: ["Hello","goodbye","green"] 我用以下文字打印: print "\t".join(row) 不幸的是,有时它包含: ["Hello",None,"green"] 这将生成此错误: TypeError: sequence item 2: expected string or Unicode, NoneType found 有没有一种简单的方法可以将任何None元素替换为“”?您可以使用:

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

通常,行包含以下内容:

["Hello","goodbye","green"]
我用以下文字打印:

print "\t".join(row)
不幸的是,有时它包含:

["Hello",None,"green"]
这将生成此错误:

TypeError: sequence item 2: expected string or Unicode, NoneType found
有没有一种简单的方法可以将任何None元素替换为“”?

您可以使用:

略短一点的方法是:

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

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

您也可以使用内置的筛选函数:

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

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

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

这将用空字符串替换被认为是
False
(None、False、0、0.0、…)的所有内容;python什么时候得到“if”作为运算符的?因为结果将被
str.join
使用,所以使用生成器表达式而不是列表理解可能非常有意义。考虑在回答的第2行中使用圆括号而不是方括号。结果是使用<代码> [< /代码>比<代码> >(<代码> >。您总是必须标明它是什么最好的:<代码> > > TimeTime.TimeIt('')。(x为[(a)”,“b”,“c”,“d”,“e”] ],“0.9901980350259691”>0.9901980350259691。(x代表[“A”、“B”、“C”、“D”、“E”])中的x,数字=1000000)1.1486009320942685>>这可能不是解决此特定问题的好方法。问题提到制表符
\t
将用作分隔符。完全删除列表中的一个元素可能会导致少发出一个制表符。这不符合我的要求,因为输出列表具有不同的numb元素的数量比输入列表要多。我不知道Python允许您在这一点上使用“或”之类的。很好。谢谢。
print "\t".join(fld or "" for fld in row)