我在打开和使用文本文件作为python中的列表时遇到问题...我需要在文本文件中使用字符串值(每个50个单词),三个文本文件......我需要使用每个文本文件中的随机单词,以便每次都产生侮辱......(莎士比亚侮辱那些知道的人)
import random #Import my random
Column_picker = random.randint(0, 45) #Define my random between 0-50
with open("Column1.txt") as d:
insults1 = list(d)
with open("Column2.txt") as f:
insults2 = list(f)
with open("Column3.txt") as e:
insults3 = list(e)
print("Thou", insults1[], insults2[], insults3[])
到目前为止,这就是我所拥有的,我感觉非常接近,我无法从列表中抓取正确的字符串..要么抓住整个列表,要么抓住它的一封信....
答案 0 :(得分:3)
import random
def random_word(filename):
with open(filename) as file:
return random.choice(file.readlines())
filenames = ["file.txt", "another.txt"]
print("Thou " + ' '.join(map(random_word, filenames)))
如果您需要多次获取行,也可以使用linecache.getline(filename, line_number)
。
答案 1 :(得分:0)
我假设每个侮辱都是文件中的一行,但如果readlines
在第一行上以空格分隔,我们可以将readlines[0].split()
替换为\n
,我们可以添加一些内容来忽略{{1}但是这个想法仍然是一样的。
import random #Import my random
Column_picker = random.randint(0, 45) #Define my random between 0-50
with open("Column1.txt") as d:
insults1 = d.readlines()
with open("Column2.txt") as f:
insults2 = f.readlines()
with open("Column3.txt") as e:
insults3 = e.readlines()
print("Thou", insults1[Column_picker], insults2[Column_picker], insults3[Column_picker])
答案 2 :(得分:0)
使用函数肯定更好:
def random_word(fname):
line_num = random.randint(0, 45)
with open(fname) as f:
lines = f.readlines()
return lines[line_num]
print("Thou",
random_word("Column1.txt"),
random_word("Column2.txt"),
random_word("Column3.txt"))
最后一行甚至可以更清洁一点:
files = ['Column1.txt','Column2.txt','Column3.txt']
insults = [random_word(f) for f in files]
print ( "Thou "+' '.join(insults) )