所以我知道如何匹配两个列表中的项目,但我很好奇的是如何链接两个匹配。例如,我有一个基于浏览器的应用程序,并使用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.xml
而list_a[3]
是foo.pdf
我怎么能告诉Python当列表的顺序永远时我想要foo.pdf
的XML数据 - 改变?
对不起,感到困惑。
答案 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