我想知道是否有办法重新排序文件中的行:
我有一个带有一些原子坐标的文件,每个原子在一行中,我需要在其他原子之前写入一些原子。让我们说:
atom c1
atom c2
atom c3
我需要重新排序。类似的东西:
atom c2
atom c1
atom c3
如果没有列表,有没有办法这样做?
即使创建一个列表,我也没有成功。最后一次试验是:
i = open("input.pdb", "r")
o = open("output.pdb", "w")
l = []
for line in i:
l. append(line.split())
for line in l:
if "atom c2" in line:
a = l.index(line)
b = int(a) -1
l[a] = l[b]
for line in l:
0.write("{}\n".format(line))
o.close()
os.remove("input.pdb")
有什么想法吗?
答案 0 :(得分:1)
让我们说,既然你没有给出任何其他指示,你事先知道应该写出这些行的顺序。
atom c1 # line 0
atom c2 # line 1
atom c3 # line 2
在您的示例中,这将是1, 0, 2
。然后,您可以代替for line in l
( please never name a variable "l
"!),而是遍历您的行索引列表,并编写每个相应的行。
with open("input.pdb", "r") as infile:
lines = [line for line in infile] # Read all input lines into a list
ordering = [1, 0, 2]
with open("output.pdb", "w") as outfile:
for idx in ordering: # Write output lines in the desired order.
outfile.write(lines[idx])