回答編集履歴

2

追記

2021/02/01 11:13

投稿

LouiS0616
LouiS0616

スコア35676

test CHANGED
@@ -9,3 +9,69 @@
9
9
 
10
10
 
11
11
  文字列化しただけで勝手に読み込む仕様にはなっていないのです。
12
+
13
+
14
+
15
+ 書いてみた
16
+
17
+ ---
18
+
19
+ もうちょっと読み易くなるかなと思ったので。
20
+
21
+ ```Python
22
+
23
+ def get_station_id(region_name: str, station_name: str) -> int:
24
+
25
+ # 該当するファイルあるいは行が無い場合の返り値
26
+
27
+ RET_LINE_NOT_FOUND = -1
28
+
29
+
30
+
31
+ # 該当するファイルを取得
32
+
33
+ file_names = [
34
+
35
+ f_name
36
+
37
+ for f_name in glob('./input/*.txt')
38
+
39
+ if region_name in f_name
40
+
41
+ ]
42
+
43
+ print(file_names)
44
+
45
+
46
+
47
+ # 該当するファイルが無い場合
48
+
49
+ if not file_names:
50
+
51
+ return RET_LINE_NOT_FOUND
52
+
53
+
54
+
55
+ # 先頭のファイルだけ取り出し
56
+
57
+ file_name, *_ = file_names
58
+
59
+ with open(file_name, mode='r') as fin:
60
+
61
+ for i, line in enumerate(fin, start=1):
62
+
63
+ if station_name in line:
64
+
65
+ return i
66
+
67
+
68
+
69
+ # 該当する行が無い場合
70
+
71
+ return RET_LINE_NOT_FOUND
72
+
73
+ ```
74
+
75
+
76
+
77
+ 仕様を簡潔にするため、globで発見したファイルの内先頭しか見ていません。

1

追記

2021/02/01 11:13

投稿

LouiS0616
LouiS0616

スコア35676

test CHANGED
@@ -1,4 +1,6 @@
1
- `f2 = str(f1)` を `f2 = f1.read()` にすれば良いです。
1
+ `f2 = str(f1)` を `f2 = f1.read()` にするのが簡単です。
2
+
3
+ ただし後続のコードをそのまま使いたいならば `f1 = list(f1)` が良いかもしれませんね。
2
4
 
3
5
 
4
6