2016-07-25 40 views
0

我有一個文本文件,它看起來像這樣:文本文件操作 - 前兩個字符之後插入一個換行符在一條線上

XX number number number 
XY number number number 
... 
XN number number number 

XX,XY等具有1首或2個字符和數字可以無論是正面的還是負面的,這並不重要。我想弄清楚(但我不能,我的生命)是如何XX後插入一個換行符,XY等讓自己的文件應該是這樣的:

XX 
number number number 
XY 
number number number 
... 
XN 
number number number 

我」什麼d也要做的是在每XX,XY後刪除空格而不是數字之間的空格。到目前爲止,我嘗試過的每一個字符後都只引入換行符。我是一個超級初學者,所以任何幫助,將不勝感激。

+0

所以XX和XY和總是出現在一行的開頭,總是表示一些整數,並且沒有行沒有? –

+0

XX,XY等總是出現在一行的開始處(它基本上是原子和原子座標,所以想想每一行都是例如C座標X座標Y座標Z)。 – JavaNewb

回答

2

str.replace()似乎是一個不錯的選擇,特別是如果你想修改每一行。

with open('input.txt') as input_file: 
    with open('output.txt', 'w') as output_file: 
     for line in input_file: 
      line = line.replace(' ', '\n', 1) 
      output_file.write(line) 

re.sub()將是一個很好的選擇,如果你只是想修改一些線,併線修改的選擇可以用正則表達式進行:

import re 
with open('input.txt') as input_file: 
    with open('output.txt', 'w') as output_file: 
     for line in input_file: 
      line = re.sub(r'(^[A-Z]+)\s+', r'\1\n', line) 
      output_file.write(line) 

str.split()可能工作,還可以,但它會破壞數字之間的多個空格的任何序列:

with open('input.txt') as input_file: 
    with open('output.txt', 'w') as output_file: 
     for line in input_file: 
      line = line.split() 
      output_file.write(line[0] + '\n') 
      output_file.write(' '.join(line[1:]) + '\n') 
+0

非常感謝你,你讓化學家非常高興! :) – JavaNewb

0
import re 
with open('input.txt') as input_file: 
     with open('output.txt', 'w') as output_file: 
      for line in input_file: 
       splitter = re.search("\d", line).start() 
       output_file.write(line[:splitter].strip() + "\n") 
       output_file.write(line[splitter:]) 
相關問題