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

回答編集履歴

5

修正

2020/11/27 08:50

投稿

sfdust
sfdust

スコア1137

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

4

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

2020/11/27 08:50

投稿

sfdust
sfdust

スコア1137

answer CHANGED
@@ -1,7 +1,9 @@
1
+ 読み込むファイルのエンコーディングはUTF-8であることが前提です。
2
+
1
3
  ```
2
4
  lines_seen = set()
3
5
  outfile = open("out.txt", "w")
4
- for line in open("in.txt", "r"):
6
+ for line in open("in.txt", "r", encoding="utf-8"):
5
7
  try:
6
8
  # 「1行にカンマは必ず存在する」(この文言だとカンマは1つだけとは限らないので先頭のみ切り出す)
7
9
  key, data = line.split(',',1)

3

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

2020/11/27 08:48

投稿

sfdust
sfdust

スコア1137

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

2

2020/11/27 08:45

投稿

sfdust
sfdust

スコア1137

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  lines_seen = set()
3
3
  outfile = open("out.txt", "w", encoding="utf-8")
4
4
  for line in open("in.txt", "r", encoding="utf-8"):
5
- # カンマは1つだけとは限らない場合もありそうので先頭のみ切り出す
5
+ # カンマは1つだけとは限らない場合もありそうので先頭のみ切り出す
6
6
  key, data = line.split(',',1)
7
7
  if key not in lines_seen:
8
8
  # カンマ以前の部分(およびカンマ自身)を除いた部分のみ書き出す

1

2020/11/27 08:03

投稿

sfdust
sfdust

スコア1137

answer CHANGED
@@ -5,6 +5,7 @@
5
5
  # カンマは1つだけとは限らない場合もありそうので先頭のみ切り出す
6
6
  key, data = line.split(',',1)
7
7
  if key not in lines_seen:
8
+ # カンマ以前の部分(およびカンマ自身)を除いた部分のみ書き出す
8
9
  outfile.write(data)
9
10
  lines_seen.add(key)
10
11
  outfile.close()