2016-09-12 8 views
0

ここに私がやろうとしていることがあります: テキストファイルの折り返しに関連する問題を解決しようとしています。現在の繰り返し中にForループの次の行を評価する

私はtxtファイルを開き、行を読んで、その行に含めるものが含まれている場合は、次の行が最初の行に含まれていないかどうかを確認してください。そうでない場合は、最初の行に行を追加します。

import re 

    stuff = open("my file") 

    for line in stuff: 
     if re.search("From ", line): 
      first = line 
      print first 
      if re.search('From ', handle.next()): 
       continue 
      else: first = first + handle.next() 

     else: continue 

私はかなりのものを見ており、答えが見つからないようです。助けてください!

+0

これはあなたが欲しいものです。今、正確な問題は何ですか? –

+0

最初の 'handle.next()'を格納する必要があります。 –

+3

*現在の行を保存せずに、次の繰り返しをチェックするのはなぜですか?そうすれば、あなたは常に前の*行を手に入れることができます。先を見越すよりもずっと後ろを振り返る方が簡単です。 –

答えて

0

私の心のフレームをリセットするためのMartjinありがとうございました!これは私が思いついたものです:

handle = open("my file") 
    first = "" 
    second = "" 
    sent = "" 
    for line in handle: 
     line = line.rstrip() 
     if len(first) > 0: 
      if line.startswith("From "): 
       if len(sent) > 0: 
        print sent 
       else: continue 
       first = line 
       second = "" 
      else: 
       second = second + line 
     else: 
      if line.startswith("From "): 
       first = line 
     sent = first + second 

これはおそらく粗いですが、間違いなく仕事を終えました!

0

私はこのようなことをしようとしますが、これは "From"のトリプルと全くエレガントではありません。

lines = open("file", 'r').readlines() 
lines2 = open("file2", 'w')  

counter_list=[] 
last_from = 0 
for counter, line in enumerate(lines): 
    if "From " in line and counter != last_from +1: 
     last_from = counter 
     current_count = counter 
    if current_count+1 == counter: 
     if "From " in line: 
      counter_list.append(current_count+1) 

for counter, line in enumerate(lines): 
    if counter in counter_list: 
     lines2.write(line) 
    else: 
     lines2.write(line, '\n') 

それが助けられた場合は、行2を確認できます。

また、行の順序を元に戻し、次の行を前の行にチェックインすることもできます。それはあなたの問題を1つのループで解決します。

関連する問題