将可能不包含的数组更改为包含&引用;用python
我有一个python函数,它获取一个名为row的数组 通常,行包含以下内容:将可能不包含的数组更改为包含&引用;用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元素替换为“”?您可以使用:
["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)