2016-07-25 10 views
0

の最初の2つの文字の後に改行文字を挿入します。テキストファイル操作 - 私はこのようになりますテキストファイル持って行

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 

私は「何また、XX、XYの後に空白を取り除いて番号間の空白を削除することもしたい。これまでに試したことはすべて、2文字ごとに改行文字を導入するだけです。私はPythonの超初心者なので、どんな助けもありがたいです。

+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:]) 
関連する問題