python学习笔记:查找只包含6个C.ar的苯环结构

这篇博客介绍了如何利用Python的正则表达式来查找MOL2文件中只含有6个C.ar苯环结构的文件。提供了两种不同的函数实现,findcar6通过遍历匹配结果验证,而findcar66直接通过count方法计数。通过这两个函数,可以有效地筛选出符合条件的文件。
摘要由CSDN通过智能技术生成

在mol2文件里面存在C.ar 文件众多,还有一些不带C.ar的文件存在。要找到包含C.ar的文件是一件很容易的事情,但是要找一个只包含只有6个C.ar 组成的苯环结构,这个时候就要用到清洗文件。将一些不包含文件清洗过滤掉。

1 含有C.ar文件情况

以1a0q_ligand.mol2为例
包含6个C.ar 的文件。
在这里插入图片描述
以1a4m_ligand.mol2为例
不包含C.ar 的文件
在这里插入图片描述

2 查找含有6个C.ar的文件

下面采用2种代码来判定返回结构是否只含有6个C.ar文件,其中带上2种写法。

第一种写法findcar6是通过正则方式一次性返回一个带.ar 数据列表。但是这个列表中是否存在6个,且全部是C.ar 呢? 这个时候只要一个不存在,则这个判定就不成立了。
当全部条件成立后,就可以把这个文件纳入清洗目标了。

第二种写法findecar66 会更加简洁一点,正则检测后,统计列表是否全部包含6个C.ar,满足条件则可以。否则就判定不满足条件。

import re


def findcar6(mol2file):
    pattern = re.compile(r'\w+\.ar')
    with open(mol2file, 'r') as f:
        content = f.read()
        ret_list = pattern.findall(content)
        if len(ret_list) == 6:
            ok = True
            for ar in ret_list:
                if ar != 'C.ar':
                    ok = False
                    print(mol2file + '不符选型')
            if ok:
                print(mol2file + '包含6个C.ar')

        else:
            print(mol2file + '不包含6个C.ar')


def findcar66(mol2file):
    pattern = re.compile(r'\w+\.ar')
    with open(mol2file, 'r') as f:
        content = f.read()
        ret_list = pattern.findall(content)
        num = ret_list.count('C.ar')
        if num == 6:
            print(mol2file + '包含6个C.ar')
        else:
            print(mol2file + '不包含6个C.ar')


if __name__ == "__main__":
    findcar66('1a0q_ligand.mol2')
    findcar66('1a4m_ligand.mol2')

运行结果可以看到对应运行情况。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值