回答編集履歴

2 修正

LouiS0616

LouiS0616 score 34311

2019/01/05 16:51  投稿

replaceはstrのメソッドです。
```diff
- n.replace('\t', ',')
+ line = line.replace('\t', ',')
```
全体的にも、改善の余地がいくつかあります。とりあえずコード後半だけ。
```Python
with open("test2.txt", "r") as oldfile, \
       open("test3.txt", "w") as newfile:
   
   for line in oldfile:
       if any(bad_word in line for bad_word in bad_words):
           continue
       
       line = line.replace('\t', ',')
       newfile.writelines(line)
       newfile.write(line)
```
- with文を使うなら、生の open/close は不要です。
- continueを使うと、『~のときはスキップ』という処理を素直に書けます。
- continueを使うと、『~のときはスキップ』という処理を素直に書けます。
- 一行だけ書き出すのなら、writelinesよりwriteの方が自然です。
1 追記

LouiS0616

LouiS0616 score 34311

2019/01/05 16:50  投稿

replaceはstrのメソッドです。
```diff
- n.replace('\t', ',')
+ line = line.replace('\t', ',')
```
```
全体的にも、改善の余地がいくつかあります。とりあえずコード後半だけ。
```Python
with open("test2.txt", "r") as oldfile, \
       open("test3.txt", "w") as newfile:
   
   for line in oldfile:
       if any(bad_word in line for bad_word in bad_words):
           continue
       
       line = line.replace('\t', ',')
       newfile.writelines(line)
```
- with文を使うなら、生の open/close は不要です。
- continueを使うと、『~のときはスキップ』という処理を素直に書けます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る