重新排序文件中的行

时间:2014-02-17 22:28:56

标签: python

我想知道是否有办法重新排序文件中的行:

我有一个带有一些原子坐标的文件,每个原子在一行中,我需要在其他原子之前写入一些原子。让我们说:

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")

有什么想法吗?

1 个答案:

答案 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])