列表中的匹配项 - Python

时间:2012-11-19 21:33:39

标签: python

所以我知道如何匹配两个列表中的项目,但我很好奇的是如何链接两个匹配。例如,我有一个基于浏览器的应用程序,并使用Jinja2作为我的模板语言。

我的程序提取了一个PDF文件列表,这些文件也有相应的XML文件。 (文件名称相似,即foo.xml包含foo.pdf的数据)PDF文件列表显示在页面上,当用户从PDF列表中单击文件名时,该文件的XML数据,如果它存在,将显示在一个小弹出窗口中。

所以,我想我的问题是,如何连接点并指定要显示的正确xml文件,因为col_list[0]并不总是同一个文件?

以下是我创建pdf文件列表的代码:

 col_list = '<li class="ui-widget-content">'.join('%s</li>' % (os.path.splitext(filename)[0])
                     for filename in listfiles
                     if filename.endswith('.pdf')
                     )

谢谢!

修改

我将给出一个不同的例子,希望减少混乱。

列表'A'是一个不断变化的PDF文件列表(foo.pdf,bar.pdf等)
列表'B'是一个不断变化的XML文件列表,名称与列表'A'相同(foo.xml,bar.xml等)

我循环遍历两个列表,并创建变量对于每个列表。如果这些列表相同,我可以简单地调用list_b[0]来获取第一个文件的xml数据,这也是第一个文件。但是,由于某些PDF还没有XML文件,因此列表的顺序不匹配。假设list_b[0]foo.xmllist_a[3]foo.pdf我怎么能告诉Python当列表的顺序永远时我想要foo.pdf的XML数据 - 改变?

对不起,感到困惑。

1 个答案:

答案 0 :(得分:1)

如果我理解正确:您想使用XML文件名的集合,并查找它们:

pdfs = ['a.pdf', 'b.pdf', 'c.pdf', 'd.pdf']
xmls = ['a.xml', 'd.xml', 'b.xml']

xml_set = set(xmls)

result = []
for pdf in pdfs:
    xml = pdf.replace('.pdf', '.xml')
    if xml in xml_set:
        result.append('Matched %s to %s' % (pdf, xml))
    else:
        result.append("%s doesn't have a corresponding XML file" % (pdf,))

print result