teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

編集

2017/10/31 06:21

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -42,7 +42,7 @@
42
42
  ---
43
43
  **元のファイルを編集する**
44
44
  可能であるなら、これが一番効率的かと思います。
45
- id.txtがどのように生成されたかはわかりませんが、次のようにしてしまうと楽です。
45
+ id.txtがどのように生成されたかはわかりませんが、次のどちらかにしてしまうと楽です。
46
46
  - 改行をなくす
47
47
  - 最後にもカンマを付ける
48
48
 

5

編集

2017/10/31 06:21

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -8,21 +8,44 @@
8
8
  ValueError: invalid literal for int() with base 10: ''
9
9
  ```
10
10
 
11
- 無駄な部分を取り除く必要がありますね。よって、次のように書けば問題いかと思います。
11
+ 次のようなアプローチが考えられます。
12
+ 0. 最後の一要素を削る
13
+ 0. 空文字列を取り除く
14
+ 0. 末尾のカンマを取り除く
15
+ 0. 元のファイルを編集する
16
+
17
+ ---
18
+ **最後の一要素を削る**
12
19
  ```Python
13
- s |= set(map(int, line.rstrip().split(',')[:-1]))
20
+ >>> '100,2,\n'.rstrip().split(',')[:-1]
21
+ ['100', '2']
14
22
  ```
15
23
 
16
24
  ただし、この方法をそのまま使うと最終行だけ上手くいきません。
17
- そこだけちょっと工夫が必要そうですね。
18
25
 
26
+ ---
19
- 可能であれば、id.txtの最終行にもカンマ付けるようにするのが最も単純です。
27
+ **空文字列取り除く**
20
- そう出来ない場合は、次のようにフィルタリングを使えますが、処理効率に響くかもしれません。
28
+ 次のようにフィルタリング出来ますが、処理効率に響くかもしれません。
21
29
  ```Python
22
30
  >>> list(filter(lambda x: x, ['100', '2', '']))
23
31
  ['100', '2']
24
32
  ```
25
33
 
26
34
  ---
35
+ **末尾のカンマを取り除く**
36
+ これも無駄な処理に思えます。
37
+ ```Python
38
+ >>> '100,2,\n'.rstrip().rstrip(',').split(',')
39
+ ['100', '2']
40
+ ```
41
+
42
+ ---
43
+ **元のファイルを編集する**
44
+ 可能であるなら、これが一番効率的かと思います。
45
+ id.txtがどのように生成されたかはわかりませんが、次のようにしてしまうと楽です。
46
+ - 改行をなくす
47
+ - 最後にもカンマを付ける
48
+
49
+ ---
27
- 最初からcsvとして処理た方が簡単な気もします。
50
+ 最初からcsvとして処理出来ら、その方が簡単な気もします。
28
51
  delimiterを複数指定できれば一番楽なのですが、私はその方法は知りません。

4

追記

2017/10/31 06:19

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -24,4 +24,5 @@
24
24
  ```
25
25
 
26
26
  ---
27
- 最初からcsvとして処理した方が簡単な気もします。
27
+ 最初からcsvとして処理した方が簡単な気もします。
28
+ delimiterを複数指定できれば一番楽なのですが、私はその方法は知りません。

3

追記

2017/10/31 06:00

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -21,4 +21,7 @@
21
21
  ```Python
22
22
  >>> list(filter(lambda x: x, ['100', '2', '']))
23
23
  ['100', '2']
24
- ```
24
+ ```
25
+
26
+ ---
27
+ 最初からcsvとして処理した方が簡単な気もします。

2

追記

2017/10/31 05:54

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -14,4 +14,11 @@
14
14
  ```
15
15
 
16
16
  ただし、この方法をそのまま使うと最終行だけ上手くいきません。
17
- そこだけちょっと工夫が必要そうですね。
17
+ そこだけちょっと工夫が必要そうですね。
18
+
19
+ 可能であれば、id.txtの最終行にもカンマを付けるようにするのが最も単純です。
20
+ そう出来ない場合は、次のようにフィルタリングを使えますが、処理効率に響くかもしれません。
21
+ ```Python
22
+ >>> list(filter(lambda x: x, ['100', '2', '']))
23
+ ['100', '2']
24
+ ```

1

追記

2017/10/31 05:51

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -8,8 +8,10 @@
8
8
  ValueError: invalid literal for int() with base 10: ''
9
9
  ```
10
10
 
11
- 無駄な部分を取り除く必要がありますね。
12
- よって、次のように書けば問題ないかと思います。
11
+ 無駄な部分を取り除く必要がありますね。よって、次のように書けば問題ないかと思います。
13
12
  ```Python
14
13
  s |= set(map(int, line.rstrip().split(',')[:-1]))
15
- ```
14
+ ```
15
+
16
+ ただし、この方法をそのまま使うと最終行だけ上手くいきません。
17
+ そこだけちょっと工夫が必要そうですね。