2017-04-05 8 views
0

モデルの開始ファイルとして機能するテキストファイルがあります。それは次のようになります。行をn回読み書きする

foo1 
foo2 
bar, foo, yolo 
1, 2, 3 
foo3 
foo4 

3行ヘッダーで、4行目は値を取り、両方の線はxがどのように大きなに依存して繰り返す必要があります。 x = 3としましょう。下の行は上書きしないで下に移動します。先頭の行(foo1 & foo2)は動的に生成されるので、必ずしも2行だけである必要はないので、インデックスでアクセスすることはできません!

だから私のファイルは、このようになります。これまでの

foo1 
foo2 
bar, foo, yolo 
1, 2, 3 
bar, foo, yolo 
1, 2, 3 
bar, foo, yolo 
1, 2, 3 
foo3 
foo4 

私の考え:

initraw = open('fileX.txt', "r") #opening raw file for reading 
initwrite= open('fileY.txt', "w") #opening file for writing 
initline = initraw.readlines() #writing content of raw file into string 

x = 3 

for line in initline: 
    initwrite.writelines(line,) 
    if line.startswith('bar, foo, yolo'): 
     for i in range(x): 
      initwrite.writelines(initline[2]) 
      initwrite.writelines(initline[3]) 

initwrite.close() #closing file 
initraw.close() #closing raw file 

これを解決する方法を任意の提案?今のところ、これは次のようになります。

"bar、foo、yolo"の後の最初の行をスキップする必要があります。

+0

これは 'bar'ラインと' 1、2、3 'の行の間に線を書きませんでしょうか?新しい行が来るようにする行のインデックスを見つけ、 'insert'を使ってそれらを' initline'に追加するだけです。 (これは 'readlines'が文字列ではなく文字列の' list'を返すからです) –

+0

@PatrickHaugh私の最後の編集を参照してください...はい、そうです。しかし、私が複製する必要がある行の数が固定されていないので、残念なことに 'startswith'を使う必要があります。 – GeoEki

答えて

0

希望はこのことができます:

x = 2 
    lines = [[item] for item in initrow.split('\n')] 
    lines[2:4] = lines[2:4] * x 

    print lines 
    #will output [['foo1'], ['foo2'], ['bar, foo, yolo'], ['1, 2, 3'], ['bar, foo, yolo'], ['1, 2, 3'], ['foo3'], ['foo4']] 
0
initraw = open('fileX.txt', "r") #opening raw file for reading 
initwrite= open('fileY.txt', "w") #opening file for writing 
initline = initraw.readlines() #writing content of raw file into string 

i = 0 
for line in initline: 
    x = 3 
    i =+ 1 
    if line.startswith('bar, foo, yolo'): 
     for x in range(0, x-1): 
      initwrite.writelines(initline[i+1]) 
      initwrite.writelines(initline[i+2]) 
    initwrite.writelines(line)  
initwrite.close() #closing file 
initraw.close() #closing raw file 
+0

私は自分の投稿を編集しました...あなたがあなたの返事を書いている間、自分自身を「続ける」ことを考え出しました。それでも、何かが欠落しています。 – GeoEki

+0

コードの一部の行を編集して変更しました。今すぐ出力します。 – X0r

+0

前の返信の後の別の編集:正面の線が動的に生成されるので、線の数はランダムです!だから私はインデックスでそれらにアクセスすることはできません...申し訳ありませんがすぐにこれを述べていないため。 – GeoEki

関連する問題