首页 > 解决方案 > 从另一个列表中匹配模式的列表中删除文件行

问题描述

我有一个文件列表和一个这样的模式列表:

fileList=glob.glob("*undex*fna")

barList=list(barcodes.values())

for i, j in zip (sorted(fileList), barList):
        print(i,j)

The original list : <type 'list'>
('bc1001_5p_test_undex.fna', 'CACTCGACTCTCGCGT')
('bc1002_5p_test_undex.fna', 'ACACTAGATCGCGTGT')
('bc1003_5p_test_undex.fna', 'ACACATCTCGTGAGAG')
('bc1004_5p_test_undex.fna', 'CACATATCAGAGTGCG')
('bc1005_5p_test_undex.fna', 'CATATATATCAGCTGT')
('bc1006_5p_test_undex.fna', 'ACACACAGACTGTGAG')
('bc1008_5p_test_undex.fna', 'ACAGTCGAGCGCTGCG')
('bc1012_5p_test_undex.fna', 'CACGCACACACGCGCG')

所有文件*fna都具有这种格式(每个文件有数千行):

head -n 2 bc1001_5p_test_undex.fna


>m64071_201130_104452/590189/ccs CACGCACACACGCGCGTGGATTGATATGTAATACGACTCACTATAGAGAGCTAATCTAAGCGAAAAAAATAGACATTTGAAAGCAAAAGCGTA
>m64071_201130_104452/590191/ccs AACACATCTCGTGAGAGTGGATTGATATGTAATACGACTCACTATAGGCAAAACCAATAAGCATATATACAACTATATATCGAGAGAGATAATATCATATAATATGG
and so on ..

我需要删除*fna找到模式的文件的完整行。但是,诀窍是:例如,我看第一个模式CACTCGACTCTCGCGT。我必须删除*fna找到该模式的文件的行,但不在第一个文件中bc1001_5p_test_undex(实际上,第一个模式与第一个文件“关联”,第二个模式与第二个文件关联,依此类推。 .)。第二个模式的相同技巧:我必须删除找到该模式的所有文件(第二个文件除外)中的行ACACTAGATCGCGTGT

标签: python

解决方案


您可以将新代码存储在列表中,仅当代码不在列表中时才显示值

fileList=glob.glob("*undex*fna")
codes = []
barList=list(barcodes.values())

for i, j in zip (sorted(fileList), barList):
        if j not in codes:
            codes.append(j)
            print(i,j)

推荐阅读