【问题标题】:Randon word from text file文本文件中的随机单词
【发布时间】:2019-02-23 11:47:43
【问题描述】:

我有一个 file.txt,我的程序每次运行程序时都会从许多单词中随机选择一个单词。每行包含一个单词。为了防止单词出现两次,我创建了另一个文件 file2.txt,以便可以将绘制的单词复制到 file2.txt 中,然后从绘制单词的 file.txt 中删除。 在画完所有的字之后(当我继续运行程序时)。然后我将所有单词从 file2.txt 复制到 file.txt(原始文件)。这就像重置所有内容以使程序为下次做好准备

我的问题是,假设我有超过 1000 个单词,这是最好的方法吗?

到目前为止,这是我的代码:

import random

mainFile = r"C:\Users\Son\file.txt"

lines = [line.rstrip('\n') for line in open(mainFile)]   
rand = random.choice(lines)  
print(rand)

secondFile = r"C:\Users\Son\file2.txt"

到目前为止,我的代码打印了 file.txt 中的随机单词。如何将该随机单词保存到 file2.txt,然后从 file.txt 中删除。

我还希望在我关闭程序或 file.txt 中的所有单词完成时将 file2.txt 中的所有单词复制回 file.txt。那么程序应该在 file.txt 中不再打印任何单词

【问题讨论】:

  • 您能否针对您的问题发布一些代码,展示您想要实现的目标。
  • 我添加了一些代码。请再看看

标签: python file random drive


【解决方案1】:

1,000(甚至 100,000)个单词通常小到足以放入记忆中。

你可以使用:

PATH = r'file1.txt'

with open(PATH, 'r') as f:
    unique_words = set(f.read().splitlines())

with open(PATH, 'w') as f:
    while unique_words:
        f.write(unique_words.pop() + '\n')

【讨论】:

  • 是否值得将整个内容映射为小写以避免重复大写单词?
  • 这取决于程序员的需求 :) 我认为这不会导致显着的性能损失,但您的选择应该基于需求和输入的大小。跨度>
  • 感谢您的解决方案,非常感谢。我在我的问题中添加了一些代码,请看看我。我如何将您的代码与我的代码混合。我也运行了你的代码,但确实得到了任何输出。
猜你喜欢
  • 1970-01-01
  • 2017-08-30
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多