Python 从.txt文件随机生成一行
我对python比较陌生,已经被安排了一个任务。我需要从.txt文件中随机生成一个单词。我可以检索特定的行,比如获取第2行或第5行,但是我想随机生成检索到的行 这就是我现在拥有的Python 从.txt文件随机生成一行,python,random,printing,words,Python,Random,Printing,Words,我对python比较陌生,已经被安排了一个任务。我需要从.txt文件中随机生成一个单词。我可以检索特定的行,比如获取第2行或第5行,但是我想随机生成检索到的行 这就是我现在拥有的 input("Press Enter to continue...") with open('words.txt') as f: for i, line in enumerate(f, 1): if i == 1: break print (line) 我试过这样做,但它只
input("Press Enter to continue...")
with open('words.txt') as f:
for i, line in enumerate(f, 1):
if i == 1:
break
print (line)
我试过这样做,但它只是提出了randrange没有定义
input("Press Enter to continue...")
import random
with open('words.txt') as f:
for i, line in enumerate(f, randrange(1,14)):
if i == 1:
break
print (line)
首先,在
for
语句末尾的:之前添加现在需要的右括号。要从文件中随机选择一行,请执行以下操作:
import random
with open('/etc/passwd') as f:
print (random.choice(list(f)))
要从文件中选择任意行,请说第i行:
或者,这可能更有效:
import itertools
with open('/etc/passwd') as f:
print (next(itertools.islice(f, i, i+1)))
然而,“从文件中选择任意行的最简单、几乎肯定也是最有效的方法是
linecache.getline('/etc/password',i)
”–import random
不会导致定义randrange
;它会导致定义random
,并且random
模块中有一个名为randrange
的函数,因此您可以执行以下操作:
for i, line in enumerate(f, random.randrange(1,14)):
或者,您也可以从random import randrange中选择
有关详细信息,请参见上的教程章节
一旦你解决了这个问题,你的代码就会工作,但是你的算法实际上并不正确
假设randrange
返回7
enumerate(f,7)
返回文件的第一行和数字7,然后返回第二行和数字8,依此类推。所以i
永远不会是1
,你也永远不会打印任何东西
要使这项工作正常,您需要将i
与随机数进行比较。像这样:
line_number = random.randrange(1, 14)
for i, line in enumerate(f):
if i == line_number:
break
当然,这仍然只是选择[1,14]范围内的一个随机行,而不是文件中的任何一行。而且,如果文件太短,它到最后一行的重量会很大
因此,您真正需要做的是获得行数,然后在randrange(count\u of\u lines)
中选择一个随机数,然后使用它。但是,如果不读取整个文件,就无法获得行数。此时,您必须关闭它并重新读取以获得所需的行数。(虽然可能会有帮助。)这非常复杂。因此,如果您有足够的内存将整个文件读入列表中,那么只需这样做,然后从列表中选择一行就更有意义了,如Rob中所示ᵩ'“它没用”是什么意思?你能分享期望的输出和实际的输出吗?如果有一个无效的语法,我只知道回溯。哦,你使用python3。请稍等。这应该可以解决它。从文件中选择任意行的最简单、几乎肯定是最有效的方法是linecache.getline('/etc/password',I)
。我还没有看到。谢谢你的提示。很抱歉,我的学校使用python 3,所以我认为在家里使用它会更容易
line_number = random.randrange(1, 14)
for i, line in enumerate(f):
if i == line_number:
break