python - 从另一个列表中匹配模式的列表中删除文件行
问题描述
我有一个文件列表和一个这样的模式列表:
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
。
解决方案
您可以将新代码存储在列表中,仅当代码不在列表中时才显示值
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)
推荐阅读
- jquery - 更改特定坐标的背景颜色
- php - Wordpress“esc ..”功能是否有任何反转功能?
- reactjs - ReactJS,material-ui TextField onChange 不起作用
- jenkins - 如何将 Jenkins 中 Active Choice Parameter 中的 MultiSelect 值转换为数组或列表?
- java - CXF:在 JAR 文件中使用 XSD 并使用相对导入进行模式验证
- docker - 如何在 digitalocean 访问 docker 容器?
- java - hibernate中复合主键的条件连接查询
- sql-server - SQL Server 创建表问题 - 消息 156
- datatable - PowerBi 转置 - 表
- firebase - 从请求中获取用户信息到 Firebase 中的 Cloud Function