您好我是python的新手。我有一个给我的脚本。我希望能够识别列表中的空字符串。 “print fileList”显示以下内容。这被视为列表中的列表或字符串列表吗?
['C:/test\\07072013_0001.zip']
['C:/test\\07072013_0006.zip']
[]
['C:/test\\07072013_00018.zip']
有数百个文件。我希望它在空[]的正上方打印zip的名称。可能有多个空箱。 例如。只是打印:
['C:/test\\07072013_0006.zip']
我尝试了一个for循环,但这似乎只是绕过空字符串,只列出文件夹中的zip文件。谢谢你的帮助。
实际输出:
================================ RESTART ============== ==================
['C:/Users/cb/Desktop/data/test\\07072013_0001.zip'] [] ['C:/Users/cb/Desktop/data/test\\08042013_0025.zip'] ['C:/Users/cb/Desktop/data/test\\08042013_0031.zip'] ['C:/Users/cb/Desktop/data/test\\08042013_0037.zip'] [] ['C:/Users/cb/Desktop/data/test\\08042013_0049.zip']
print type(fileList)
>>> ================================ RESTART ================================
>>>
<type 'list'>
<type 'list'>
<type 'list'>
<type 'list'>
<type 'list'>
<type 'list'>
<type 'list'>
答案 0 :(得分:1)
这被视为列表中的列表或字符串列表吗?
这是一份清单。
[
[element],
[element],
[element],
[element],
]
字符串列表如下:
[
'element',
'element',
'element',
'element',
]
我尝试了一个for循环,但这似乎只是绕过空字符串,只列出文件夹中的zip文件。
请发布到目前为止您尝试过的内容及其提供的输出。我会用我建议的任何更正来编辑这个答案。
答案 1 :(得分:1)
您可以在此处使用itertools.izip
。 itertools.izip
返回一个迭代器,因此它具有内存效率,如果列表不是很大,那么你也可以使用内置函数zip
。
from itertools import izip, tee
lis = [['a'], [], ['b'], ['c'], [], [], ['d'], []]
it1, it2 = tee(lis)
next(it2)
for x, y in izip(it1, it2):
if x and not y:
print x
<强>输出:强>
['a']
['c']
['d']
答案 2 :(得分:0)
# Old variable a replaced with fileList
for indx, x in enumerate(fileList):
if len(x) == 0:
if (indx > 0):
print fileList[indx-1]
答案 3 :(得分:0)
您可以使用zip
获取以前的文件名:
fileList = [['C:/test\\07072013_0001.zip'],
['C:/test\\07072013_0006.zip'],
[],
['C:/test\\07072013_00018.zip'],
]
for file, prev in zip(fileList[1:],fileList):
if not file:
print prev
打印出来:
['C:/test\\07072013_0006.zip']
答案 4 :(得分:0)
ref = [
['a'],
['b'],
[],
[],
['d'],
['e'],
['f'],
['g'],
[],
['i'],
[],
['k'],
['l']
]
results = [ref[index - 1] for (index,item) in enumerate(ref) if (not item and index > 0 and ref[index - 1])]
print results
输出:
[['b'], ['g'], ['i']]
ref = [
['a'],
['b'],
[],
['d'],
['e'],
['f'],
['g'],
[],
[],
['i'],
[],
['k'],
['l']
]
def test(l):
for (index,item) in enumerate(ref):
if not item and index > 0 and l[index - 1]:
yield l[index - 1][0]
for i in test(ref):
print i
# or
print list(test(ref))
输出:
b
g
i
['b', 'g', 'i']