回答編集履歴

5

修正

2020/11/27 08:50

投稿

sfdust
sfdust

スコア1137

test CHANGED
@@ -1,4 +1,4 @@
1
- 読み込むファイルのエンコーディングはUTF-8であることが前提です。
1
+ 下記読み込むファイルのエンコーディングはUTF-8であることが前提です。
2
2
 
3
3
 
4
4
 

4

エンコーディングを指定。

2020/11/27 08:50

投稿

sfdust
sfdust

スコア1137

test CHANGED
@@ -1,10 +1,14 @@
1
+ 読み込むファイルのエンコーディングはUTF-8であることが前提です。
2
+
3
+
4
+
1
5
  ```
2
6
 
3
7
  lines_seen = set()
4
8
 
5
9
  outfile = open("out.txt", "w")
6
10
 
7
- for line in open("in.txt", "r"):
11
+ for line in open("in.txt", "r", encoding="utf-8"):
8
12
 
9
13
  try:
10
14
 

3

追加(カンマが存在しない行が存在する場合に対応)

2020/11/27 08:48

投稿

sfdust
sfdust

スコア1137

test CHANGED
@@ -2,17 +2,23 @@
2
2
 
3
3
  lines_seen = set()
4
4
 
5
- outfile = open("out.txt", "w", encoding="utf-8")
5
+ outfile = open("out.txt", "w")
6
6
 
7
- for line in open("in.txt", "r", encoding="utf-8"):
7
+ for line in open("in.txt", "r"):
8
8
 
9
- # カンマは1つだけとは限らない場合もありそうなので先頭のみ切り出す
9
+ try:
10
10
 
11
+ # 「1行にカンマは必ず存在する」(この文言だとカンマは1つだけとは限らないので先頭のみ切り出す)
12
+
11
- key, data = line.split(',',1)
13
+ key, data = line.split(',',1)
14
+
15
+ except ValueError:
16
+
17
+ print("---カンマが存在しない行を読み込みました。スキップして処理を継続します。---")
18
+
19
+ continue
12
20
 
13
21
  if key not in lines_seen:
14
-
15
- # カンマ以前の部分(およびカンマ自身)を除いた部分のみ書き出す
16
22
 
17
23
  outfile.write(data)
18
24
 
@@ -20,4 +26,6 @@
20
26
 
21
27
  outfile.close()
22
28
 
29
+ print("処理が完了しました。")
30
+
23
31
  ```

2

2020/11/27 08:45

投稿

sfdust
sfdust

スコア1137

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  for line in open("in.txt", "r", encoding="utf-8"):
8
8
 
9
- # カンマは1つだけとは限らない場合もありそうので先頭のみ切り出す
9
+ # カンマは1つだけとは限らない場合もありそうので先頭のみ切り出す
10
10
 
11
11
  key, data = line.split(',',1)
12
12
 

1

2020/11/27 08:03

投稿

sfdust
sfdust

スコア1137

test CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  if key not in lines_seen:
14
14
 
15
+ # カンマ以前の部分(およびカンマ自身)を除いた部分のみ書き出す
16
+
15
17
  outfile.write(data)
16
18
 
17
19
  lines_seen.add(key)