在文本文件中交换文本行

时间:2015-03-08 10:52:37

标签: python text-files swap lines

我想编写一个pythonV2.7脚本,打开一个.txt文件并读取输入,然后反转2个特定的行模式而不影响其余部分。

行数从不相同,长度高达15万行或更多。以下是一个例子。我希望将以MO5开头的行与先前的Z行交换(这始终是常量),并将其余部分保持原样。然后我会写入新的file.txt,保留原文。

example.txt中:

G00 Z 0.1325 
G01 X 2.000 Y 1.00 Z0.00
y 4.000 X 1.00 
Z 0.1325
X 1.000
Y 4.000
X 4.000
M05 (OFF)
G00 Z 0.1325 
G01 X 2.000  X 0.000
Y 4.000 X 1.000
G00 Z 0.1325
M05 (OFF)

1 个答案:

答案 0 :(得分:4)

以适当的文件模式打开输入和输出文件。现在迭代线并将先前读取的行保留在某个变量中说prev,如果一行以M05开头,则在输出文件中写入当前行,否则写入prev行。

以下是代码:

inp = open('input.txt', 'r')
out = open('output.txt', 'w')
prev = inp.readline()
for line in inp:
   if line.startswith('M05'):
      out.write(line)
      continue
   else:
      out.write(prev)
   prev = line
out.write(prev)
out.close()
inp.close()