回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在列表(filelist)中有以下文件名:</p>
<pre><code>filelist = ['ABC.dat',
'ABC3.dat',
'ABC10.dat',
'ABC956.dat',
'XYZ_PQR_JKL.dat',
'XYZ_PQR_JKL_1.dat',
'XYZ_PQR3_JKL.dat',
'XYZ_PQR3_JKL_1.dat',
'XYZ_PQR10_JKL.dat',
'XYZ_PQR10_JKL_1.dat',
'XYZ_PQR956_JKL.dat',
'XYZ_PQR956_JKL_1.dat']
unique_filelist = ['ABC.dat',
'XYZ_PQR_JKL.dat',
'XYZ_PQR_JKL_1.dat',]
</code></pre>
<p>基本上,一组文件是在不同的时间生成的,在本例中是3、10、956,我之前就知道了。我需要根据这些时间(文件集)对文件进行分组,即应生成以下嵌套列表作为输出:</p>
<pre><code>[['ABC.dat', 'ABC3.dat', 'ABC10.dat', 'ABC956.dat'],
['XYZ_PQR_JKL.dat', 'XYZ_PQR3_JKL.dat', 'XYZ_PQR10_JKL.dat', 'XYZ_PQR956_JKL.dat'],
['XYZ_PQR_JKL_1.dat', 'XYZ_PQR3_JKL_1.dat', 'XYZ_PQR10_JKL_1.dat', 'XYZ_PQR956_JKL_1.dat']]
</code></pre>
<p>我正在尝试将文件列表与fileset和unique\ filelist进行比较,如果它们匹配,则添加到列表中。MWE如下所示,不符合预期:</p>
<p><strong>MWE</strong></p>
<pre><code>import re
filelist = ['ABC.dat',
'ABC3.dat',
'ABC10.dat',
'ABC956.dat',
'XYZ_PQR_JKL.dat',
'XYZ_PQR_JKL_1.dat',
'XYZ_PQR3_JKL.dat',
'XYZ_PQR3_JKL_1.dat',
'XYZ_PQR10_JKL.dat',
'XYZ_PQR10_JKL_1.dat',
'XYZ_PQR956_JKL.dat',
'XYZ_PQR956_JKL_1.dat']
fileset = [3, 10, 956]
unique_filelist = ['ABC.dat',
'XYZ_PQR_JKL.dat',
'XYZ_PQR_JKL_1.dat',]
for i in filelist:
for j in fileset:
search_go_to = set([unique_filelist, str(j)])
m = ' .*? '.join(x for x in search_go_to)
matches = [s for s in filelist if re.search(m, s)]
print (matches)
</code></pre>
<p>如何将两个列表与第三个列表进行比较,如果存在匹配项,则将它们分组到嵌套列表中?你知道吗</p>