列表中的匹配项-Python

列表中的匹配项-Python,python,Python,所以我知道如何匹配两个列表中的项目,但我好奇的是如何链接这两个匹配。例如,我有一个基于浏览器的应用程序,并使用Jinja2作为我的模板语言我的程序提取一个PDF文件列表,其中也包含相应的XML文件。(文件的名称类似,即foo.xml包含foo.pdf的数据)页面上会显示pdf文件列表,当用户单击pdf列表中的文件名时,该文件的xml数据(如果存在)将显示在一个小弹出窗口中因此,我想我的问题是,如何连接点并指定要显示的正确xml文件,因为列列表[0]并不总是同一个文件?下面是我创建pdf文件列表的

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

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

因此,我想我的问题是,如何连接点并指定要显示的正确xml文件,因为
列列表[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')
                     )
col_list='
  • '.join(“%s
  • ”%)(os.path.splitext(文件名)[0]) 用于列表文件中的文件名 如果filename.endswith(“.pdf”) )
    谢谢

    编辑:

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

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

    我正在两个列表上循环,并为每个列表创建变量。如果这些列表相同,我可以简单地调用
    list\u b[0]
    来获取第一个文件的xml数据,这也是第一个PDF文件。但是,由于一些PDF还没有XML文件,列表的顺序不匹配。比如说
    list\u b[0]
    is
    foo.xml
    list\u a[3]
    is
    foo.pdf
    当列表的顺序不断变化时,我如何告诉Python我想要
    foo.pdf
    的xml数据
    很抱歉造成混淆。

    如果我理解正确:您想为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
    

    如果我理解正确:您希望为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
    

    打断你的问题-我中途停止呼吸。。。而且,这似乎取决于web服务器、框架或其他东西。。。我认为我们没有完整的图片。我不太确定你在做什么,但你提到你有一个Jinja2模板。那么为什么要用Python生成这个HTML呢?只需将您的文件名列表传递到模板,并使用
    {%forfilenames%}
    循环创建无序列表。感谢iGuanaaut,我刚刚学习Jinja2,因此我还不完全熟悉它的功能。我现在生成HTML的方式仅仅是因为它工作正常。我之前发布的代码为列表中的每个对象创建了
  • 标记,允许我在Jquery脚本中很好地组织列表。打断你的问题-我中途停止呼吸。。。而且,这似乎取决于web服务器、框架或其他东西。。。我认为我们没有完整的图片。我不太确定你在做什么,但你提到你有一个Jinja2模板。那么为什么要用Python生成这个HTML呢?只需将您的文件名列表传递到模板,并使用
    {%forfilenames%}
    循环创建无序列表。感谢iGuanaaut,我刚刚学习Jinja2,因此我还不完全熟悉它的功能。我现在生成HTML的方式仅仅是因为它工作正常。我之前发布的代码为列表中的每个对象创建了
  • 标记,允许我在Jquery脚本中很好地组织列表。是的!谢谢,结果很好。我不知道
    set
    类型。@DrydenLong:列表也可以,但是
    中的
    操作符在set上要快得多。是的!谢谢,结果很好。我不知道
    set
    类型。@DrydenLong:列表也可以,但是
    中的
    操作符在set上要快得多。