1

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

我的程序会提取一个包含相应 XML 文件的 PDF 文件列表。(文件命名类似,即 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。但是,由于某些 PDF 还没有 XML 文件,因此列表的顺序不匹配。假设list_b[0] isfoo.xmllist_a[3]is当列表的顺序不断变化时foo.pdf,我如何告诉 Python 我想要 XML 数据? 对困惑感到抱歉。foo.pdf

4

1 回答 1

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
于 2012-11-26T21:42:28.493 回答