2017-05-06 7 views
1

文書の各行に異なる操作を実行します。すべてのline 1Pythonは:私はこのようなビットに見えるテキストファイル持って

line 1 
line 2 
line 3 
line 4 

line 1 
line 2 
line 3 
line 4 

(etc) 

は、私は特定の操作を実行したいが、すべてline 2でで、

if counter == 1: 
    this(line) 
elif counter == 2: 
    that(line) 
elif etc 

私の質問:別の操作は、など(空白を含む)ラインの繰り返しのパターンは、文書全体を保持するので、現在、私はちょうどで、すべての空白行とif文の束をリセットカウンターを持っていますこれを行うより効率的でPythonの方法がありますか?

ありがとうございます!

+0

パラグラフ間には空白行が1つありますか? –

+0

はい。私はちょうどこれを反映するために自分の投稿を編集しました – Wmbuch

+0

pythonには 'switch'ステートメントはありませんが、同じことを達成する方法があります。 'elif'の束が欲しくなければ、http://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-pythonを見てください。 – JohanL

答えて

4

あなたは関数のリストで検索を試みることができる:

line_processors = [ 
    lambda ln: print("line 1 of paragraph:", ln), 
    lambda ln: print("line 2 of paragraph:", ln), 
    lambda ln: print("line 3 of paragraph:", ln), 
    lambda ln: print("line 4 of paragraph:", ln), 
    lambda ln: print("blank line:", ln), 
] 

with open("myfile.txt") as f: 
    for i, line in enumerate(f): 
     line_processors[i % 5](line) 
0

あなたはすべてのあなたのファイルの行を読み込み、行のリストを作成することができます。その後、リストインデックスで操作するだけです。

with open(fname) as f: 
    content = f.readlines()  
content = [x.strip() for x in content] 

# this(content[0]) 
# that(content[1]) 
関連する問題