0

我使用此代码将非结构化文本文件拆分为其标记并将每个标记输出在一行中:

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 回答