x = ''
if x:
# Original string was non-empty, split it
splitx = x.split(',')
if any(splitx):
# There was at least one character in the original string that wasn't a comma
>>> import csv, io
>>> f = io.StringIO('\n\na,b,c\n1,2,3\n\n')
>>> [row for row in csv.reader(f) if row] # Stripping easily
[['a', 'b', 'c'], ['1', '2', '3']]
与str.split(',')相同的方法相比,它仍然不处理引用、转义等:
>>> f = io.StringIO('\n\na,b,c\n1,2,3\n\n')
>>> stripped = (line.rstrip('\r\n') for line in f) # Must manually strip line endings first
>>> [line.split(',') for line in stripped if line]
[['a', 'b', 'c'], ['1', '2', '3']]
在你的情况下它真的不是空的
如果要检查该列表中的元素是否为空,可以执行以下操作:
使用
bool([''])
检查列表['']
是否有任何内容,它确实有,内容恰好是空字符串''
。如果要检查列表中的所有元素是否为“空”(因此,如果列表包含字符串} :
''
,它将返回False
),则可以使用内置函数^{这将获取列表
l
中的每个元素v
,并检查它是否有True
值;如果所有的元素都这样做,则返回True
;如果至少有一个元素没有返回False
。例如:您可以用^{} 替换它来执行部分检查,并查看列表中的项是否有值
l
。一个更全面的例子*两种用途:
*正如评论中指出的,同样的事情也可以通过
all(l)
或any(l)
来完成,因为他们最后都接受了一个iterable。如果空是重要的结果,最好先测试原始字符串:
第一个测试排除了空的初始字符串,第二个测试使用^{} 排除了只不过是拆分字符的字符串,因此返回了一整串空字符串,但没有非空字符串。只要你有一个非空字符串,它就通过了。
注意:如果您试图解析CSV文件,请不要使用} module 可以正确处理此问题(包括转义、引用等),如果总是用于解析CSV,请不要滚动自己的解析器。附加的好处是:
.split(',')
;有一个^{csv
将把''
输入转换为[]
行,您可以直接测试这些行的真实性,而不是像str.split
那样['']
。示例:与
str.split(',')
相同的方法相比,它仍然不处理引用、转义等:相关问题 更多 >
编程相关推荐