質問: text2.rstrip() if "nest" in text2: break print(row1) #2回目"2"と出力 (1回目で取得した値と内容が異なる) # print(row2) # "4","5"と出力 for x in range(row1,row2): #上記で取得した行番号を元に更なるfor文での処理を行う ```
回答: for内の一時変数であるrow1,row2の値を保存していないのだからそうなります。 グローバル変数に配列でも用意して保存すればよいのでは? また「変わっている」といっていますが、一回目の最後の出力"2"が2回目にも"2"と出力されているので「変わって」いませんよ。 抽出と言っていますが、ASKの抽出で、B.txtの4行目は拾われていませんが、それで問題ないんですかね? コード例追記(もっと簡潔に表す方法はあるかと思いますが) ``` import glob report = glob.glob('*.txt')#複数のファイルを読み込む #listALL =[] #ループ外で再利用する場合 ######ファイル毎にループ###### for m in report: with open(m, encoding="utf-8") as fin: start =-1 #ASKの位置 end =-1 #nestの位置 list=[] #結果出力用リスト for row1, text1 in enumerate(fin, start=1): text1 = text1.rstrip() list.append(text1) if "Ask" in text1: if start=-1: #startが初期値の場合 start=row1-1 #startを更新 if "nest" in text1: end=row1 #エラー処理 #ASK,nestが見つからないもしくはnestのあとにASKが来る場合 if (start == -1) or (end == -1) or (start > end): print("error") #エラー出力してそのファイルは飛ばす。 continue list=list[start:end] print(list) #このへんで処理 #listAll.append(list) #ループ外で再利用する場合 #print(listAll) #ループ外で再利用する場合 ##このへんで処理 ##出力 #['Ask', 'test', 'test', 'nest'] #ループ1周目(A.txt) #['Ask', 'test', 'Ask', 'nest'] #ループ2周目(B.txt) #[['Ask', 'test', 'test', 'nest'], ['Ask', 'test', 'Ask', 'nest']] #listAllを出力した場合 ```