【发布时间】:2019-09-04 18:46:00
【问题描述】:
当任意两个 XYZ 坐标之间没有空格时,我使用的软件不接受输入。例如,“38.420 -6.206-108.383”只有写成“38.420 -6.206 -108.383”才能处理。 由于我有 1000 多个 PDB 文件要处理,每个文件都包含数百行坐标,我迫切需要一种有效的方法来检测是否需要在任意两个坐标之间添加空格,如果是,插入一个空间。 插入空格后,“.inp”文件中的旧坐标需要替换为新坐标作为输入。
我怎么可能使用 python 实现这一点?
我尝试手动更改坐标,但后来意识到这几乎是不可能的......下面的代码确实有效,但它只粘贴原始坐标而不在必要时插入空格。
目前的代码如下:
'''
input = open("hole.inp").readlines()
old_cpoint = input[16][7:29]
for i in range(1002):
with open(dir + str(i) + '.pdb') as file:
c = file.readlines()
new_cpoint = c[2849][31:54]
f_a = open("hole_"+str(i)+".inp").read()
f_a = f_a.replace(str(old_cpoint),str(new_cpoint))
f_b = open("hole_"+str(i)+".inp", 'w')
f_b.write(f_a)
f_b.close()
'''
【问题讨论】:
-
坐标总是有破折号吗?如果他们没有破折号,你怎么知道“38.4206.206108.383”中的x、y和z是什么——你能对这些坐标的长度做出任何假设吗?例如,如果点后面总是有 3 位数字,或者破折号总是在那里(我可以快速发布解决方案),这是可能的。如果你不能区分每个坐标的开始/结束,我认为这是不可能的。
-
是的。通常坐标如下所示: "30.604 -29.297 76.055" 小数点后始终保留 3 位;并且大多数时候之间有1-2个空格。唯一的例外是当两列有一个“-”符号时,它会占用原始示例中所示的空间。提前感谢 Kacper!
-
更正:当有两个“-”符号且一个坐标在小数点前有 3 位时,空格会被填满。
标签: python formatting coordinates biopython pdb