簡體   English   中英

匹配列表中的項目-Python

[英]Matching Items in Lists - Python

所以我知道如何匹配兩個列表中的項目,但是我很好奇的是如何鏈接兩個匹配項。 例如,我有一個基於瀏覽器的應用程序,並且正在使用Jinja2作為模板語言。

我的程序提取了一個PDF文件列表,其中也有相應的XML文件。 (文件的名稱類似,即foo.xml包含foo.pdf的數據)PDF文件列表顯示在頁面上,並且當用戶從PDF列表中單擊文件名時,該文件的XML數據(如果存在)將顯示在一個小彈出窗口中。

因此,我想我的問題是,由於col_list[0]並不總是相同,我該如何連接點並指定要顯示的正確xml文件?

以下是我創建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]來獲取第一個文件(也就是第一個PDF)的xml數據。 但是,由於某些PDF還沒有XML文件,因此列表的順序不匹配。 假設list_b[0]foo.xmllist_a[3]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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM