为什么re.match()在这里不能正常运行?

时间:2020-08-18 14:51:06

标签: python python-3.x bioinformatics biopython

我正在尝试使用Python解析pdb文件(蛋白质数据库)。

文件中的此类行引起了麻烦:

ATOM 4811 HB2ASER A 329 41.099 -2.338 37.406 0.74 12.06 H

否则,它们将采用以下格式:

ATOM 4810 HA BSER A 329 39.458 -2.064 39.518 0.26 11.30 H

在这里,可见,列表中的第3个和第4个元素将被合并,当我拆分列表时,它们被视为单个元素。

这是我要克服的方法:

for line in pdbfile:
        line_list = line.split()
        id = line_list[0]
        
        if id == 'ATOM':
            s_no = line_list[1]
            atom = line_list[3]
            chain_id = line_list[4]
            if len(chain_id) > 1:
                line_list.insert(0, 0)
                match = re.match(r"([a-z]+)([0-9]+)([a-z]+)", atom, re.I)
                if match:
                    atom = match.groups()[-1]

            x_coord = line_list[6]
            y_coord = line_list[7]
            z_coord = line_list[8]

            with open('coordinates.csv', 'a', newline='') as csvfile:
                # print(chain_id)
                writer = csv.writer(csvfile)
                writer.writerow([s_no, pdb_id, resolution, atom, chain_id,
                                 x_coord, y_coord, z_coord])

当我在外壳中运行相同的代码时,它将产生正确的输出。但是,当我运行该程序时,我尝试创建的csv文件没有任何更改。结果是:

csv result

因此,基本上,上面的if语句并没有在shell中执行它的操作。为什么?

0 个答案:

没有答案