本文主要是介绍python学习笔记:查找只包含6个C.ar的苯环结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在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 redef 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 = Truefor ar in ret_list:if ar != 'C.ar':ok = Falseprint(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')
运行结果可以看到对应运行情况。
这篇关于python学习笔记:查找只包含6个C.ar的苯环结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!