0

このコードを使用して、非構造化テキスト ファイルをトークンに分割し、各トークンを 1 行で出力します。

with open("C:\\...\\...\\...\\record-13.txt") as f:
   lines = f.readlines()
   for line in lines:
       words = line.split()
       for word in words:
           print (word)

ここで、出力を印刷する代わりに新しいテキスト ファイルに保存したいので、コードを次のように変更します。

with open("C:\\...\\...\\...\\record-13.txt") as f:
   lines = f.readlines()
   for line in lines:
       words = line.split()
       for word in words:
           file = open ("tokens.txt", "w")
           file.write (word)
           file.close()

しかし、うまくいきません。それの何が悪いのか教えてください。

4

1 に答える 1

3

トークンごとにファイルを開いています。モードで開いているため'w'、ファイルは切り捨てられています。'a'ファイルに追加するモードで開くことができますが、それは非常に非効率的です。

より良い方法は、最初に出力ファイルを開き、コンテキスト マネージャーに閉じさせることです。また、最初にファイル全体をメモリに読み込む必要もありません。

with open("in.txt") as in_file, open("tokens.txt", "w") as out_file:
   for line in in_file:
       words = line.split()
       for word in words:
           out_file.write(word)
           out_file.write("\n")

各単語を別の行に入れたいと思うので、必ず改行文字も書いてください。

于 2013-11-04T01:26:50.523 に答える