我正在尝试使用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文件没有任何更改。结果是:
因此,基本上,上面的if语句并没有在shell中执行它的操作。为什么?