2016-12-03 2 views
2

ループ関数を使用して、 "Article 1"、 "Article 2"などの5つの文字列を使用したいと思っています。テキストファイルがあります。例:Pythonでオープン関数とループを使用する

この記事の目的は、各記事を後で同じテキスト形式のデータのまとまりとしてエクスポートするためです。ここ は、私が持っているものです。

n=0 
while n < 5: 
    n = n + 1 
    a = ('Article %(number)s' % {'number': n}) 
    print(a) 
with open("LISR2.txt") as openfile: 
    for line in openfile: 
    if a in line: 
     print(line) 

しかし、私が得ること

C:\Users\Rafael\AppData\Local\Programs\Python\Python35-32\python.exe 
Article 1 
Article 2 
Article 3 
Article 4 
Article 5 
Article 5. The red dog jumps over the lazy fox 

であるが、これは私がやろうとしています何に正しいアプローチですか?あるいは、ちょっとしたコード構文を変更するだけですか?

+0

aが持つ内部の範囲にあるように表示されません。 – Carcigenicate

+0

@Carcigenicate出力から、 'while'ループが実行を終了した後、' with'は 'a'の最終値を使用しているようです。 –

+0

あなたの質問を編集するのではなく、答えとしてあなたの解決策を投稿してください。また、サイトで許可されている場合は、回答を受け入れる必要があります。さらに多くの担当者がいる場合は、投票の回答を参考にすることもできます。 –

答えて

2

コードは、入力した順序で実行されることを忘れないでください。また、Pythonの字下げによって入れ子が決まります。つまり、whilewithの文は同じレベルにあり、順番に実行されます。 withステートメントを "Article"ごとに実行する場合は、別のレベルをインデントして、ループの後ろではなくwhileループ内にする必要があります。私はPythonで始めることだし、でもインデントを考慮していない

2

申し訳ありませんが、ここでのソリューションです:

n=0 
while n < 5: 
    n = n + 1 
    a = ('Article %(number)s' % {'number': n}) 
    print(a) 
    with open("LISR2.txt") as openfile: 
    for line in openfile: 
     if a in line: 
      print(line) 
関連する問題