回答編集履歴

2 追記

LouiS0616

LouiS0616 score 27174

2018/04/26 16:59  投稿

関数extract_wordsを呼び出すたびに、上書きしてしまっているのだと思います。
追記モードでファイルを開いてみてください。⇒ `open("test_token.txt", "a")`
---
良く考えたら、毎回ファイルを開くのってものすごく無駄になりそうですね。
extract_wordsがファイルオブジェクトを受け取る仕様にすれば良いかも。
```Python
def extract_words(text, fp=sys.stdout):
   ...
   for token in tokens:
       word.append(token)
       fp.write(str(word))
       fp.write(str(word)) # 単にwritelines使っちゃダメなの?
       fp.write("\n")
 
   ...
...
with open('test_token.txt', 'w') as fp:
   wordlist = [extract_words(sentence, fp) for sentence in sentences]
...
```
引数なしで呼び出せば標準出力で見られるというおまけつきです。
1 追記

LouiS0616

LouiS0616 score 27174

2018/04/26 16:48  投稿

関数extract_wordsを呼び出すたびに、上書きしてしまっているのだと思います。
追記モードでファイルを開いてみてください。⇒ `open("test_token.txt", "a")`
追記モードでファイルを開いてみてください。⇒ `open("test_token.txt", "a")`
---
良く考えたら、毎回ファイルを開くのってものすごく無駄になりそうですね。
extract_wordsがファイルオブジェクトを受け取る仕様にすれば良いかも。
```Python
def extract_words(text, fp=sys.stdout):
   ...
   for token in tokens:
       word.append(token)
       fp.write(str(word))
       fp.write("\n")
 
   ...
...
with open('test_token.txt', 'w') as fp:
   wordlist = [extract_words(sentence, fp) for sentence in sentences]
...
```
引数なしで呼び出せば標準出力で見られるというおまけつきです。

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