如何解决为什么re.match在这里不能正常运行?
我正在尝试使用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,chain_id,x_coord,y_coord,z_coord])
当我在外壳中运行相同的代码时,它将产生正确的输出。但是,当我运行该程序时,我尝试创建的csv文件没有任何更改。结果是:
因此,基本上,上面的if语句并没有在shell中执行它的操作。为什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。