这可能是如此简单。我编写了一些东西来打印文件中的随机行,但它一次打印一个字符。这是代码。
from twython import Twython, TwythonError
import random, time
filename = open('test.txt')
line = random.choice(filename.readlines())
filename.close()
for line in line:
print line
任何帮助都绝对值得赞赏。我是初学者,所以老实说这可能很简单。
答案 0 :(得分:1)
这里的问题是random.choice
将返回一个字符串。实际上,你正在迭代一个字符串。您应该拨打split()
后拨打random.choice
,这样您最终会得到一个单词列表而不是字符串。然后你的迭代将按预期工作。
另外,你真的不应该像这样迭代:
for line in line
更改迭代器:
for word in line
此外,在处理文件时习惯使用context managers是一种好习惯。 e.g:
with open(some_file) as f:
# do file actions here
所以,你的最终解决方案如下:
import random
with open('new_file.txt') as f:
line = random.choice(f.readlines()).split()
for word in line:
print(word)
答案 1 :(得分:1)
random.choice
一次只返回元素,您必须使用shuffle
代替:
from twython import Twython, TwythonError
import random, time
filename = open('test.txt')
lines = filename.readlines()
filename.close()
random.shuffle(lines)
for line in lines:
print line
答案 2 :(得分:0)
有些事情,首先是可读性:
for line in line
print line #which line do you mean?
现在,
line = random.choice(filename.readlines())
只是在文件中给你一个随机行,它不会以随机顺序给你所有的行。
您可以通过简单的调用
对数组进行随机播放import random
filename = open('new_file.txt')
lines = filename.readlines()
random.shuffle(lines)
for line in lines:
print line
您还可以随机从数组中随机取出项目,直到它为空
import random
filename = open('new_file.txt')
lines = set( filename.readlines() )
while( len(lines) != 0 ):
choice = random.choice(list(lines))
print(choice)
lines.remove(choice)
这个答案可能会有所帮助:randomly selecting from array