回答編集履歴

1

コード例追記

2020/07/25 15:52

投稿

Kaleidoscope
Kaleidoscope

スコア257

test CHANGED
@@ -5,3 +5,95 @@
5
5
  また「変わっている」といっていますが、一回目の最後の出力"2"が2回目にも"2"と出力されているので「変わって」いませんよ。
6
6
 
7
7
  抽出と言っていますが、ASKの抽出で、B.txtの4行目は拾われていませんが、それで問題ないんですかね?
8
+
9
+
10
+
11
+ コード例追記(もっと簡潔に表す方法はあるかと思いますが)
12
+
13
+ ```python
14
+
15
+ import glob
16
+
17
+ report = glob.glob('*.txt')#複数のファイルを読み込む
18
+
19
+
20
+
21
+ #listALL =[] #ループ外で再利用する場合
22
+
23
+
24
+
25
+ ######ファイル毎にループ######
26
+
27
+ for m in report:
28
+
29
+ with open(m, encoding="utf-8") as fin:
30
+
31
+ start =-1 #ASKの位置
32
+
33
+ end =-1 #nestの位置
34
+
35
+ list=[] #結果出力用リスト
36
+
37
+
38
+
39
+ for row1, text1 in enumerate(fin, start=1):
40
+
41
+ text1 = text1.rstrip()
42
+
43
+ list.append(text1)
44
+
45
+
46
+
47
+ if "Ask" in text1:
48
+
49
+ if start=-1: #startが初期値の場合
50
+
51
+ start=row1-1 #startを更新
52
+
53
+ if "nest" in text1:
54
+
55
+ end=row1
56
+
57
+
58
+
59
+ #エラー処理
60
+
61
+ #ASK,nestが見つからないもしくはnestのあとにASKが来る場合
62
+
63
+ if (start == -1) or (end == -1) or (start > end):
64
+
65
+ print("error") #エラー出力してそのファイルは飛ばす。
66
+
67
+ continue
68
+
69
+
70
+
71
+ list=list[start:end]
72
+
73
+ print(list) #このへんで処理
74
+
75
+
76
+
77
+ #listAll.append(list) #ループ外で再利用する場合
78
+
79
+
80
+
81
+ #print(listAll) #ループ外で再利用する場合
82
+
83
+ ##このへんで処理
84
+
85
+
86
+
87
+ ##出力
88
+
89
+ #['Ask', 'test', 'test', 'nest'] #ループ1周目(A.txt)
90
+
91
+ #['Ask', 'test', 'Ask', 'nest'] #ループ2周目(B.txt)
92
+
93
+ #[['Ask', 'test', 'test', 'nest'], ['Ask', 'test', 'Ask', 'nest']] #listAllを出力した場合
94
+
95
+
96
+
97
+
98
+
99
+ ```