Python打印字符串就在列表中的空字符串上方

时间:2013-08-06 16:16:33

标签: python

您好我是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'>

5 个答案:

答案 0 :(得分:1)

  

这被视为列表中的列表或字符串列表吗?

这是一份清单。

[
[element], 
[element], 
[element], 
[element], 
]

字符串列表如下:

[
'element', 
'element', 
'element', 
'element', 
]
  

我尝试了一个for循环,但这似乎只是绕过空字符串,只列出文件夹中的zip文件。

请发布到目前为止您尝试过的内容及其提供的输出。我会用我建议的任何更正来编辑这个答案。

答案 1 :(得分:1)

您可以在此处使用itertools.izipitertools.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']