0

我在 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[])

这就是我到目前为止所拥有的,我感觉非常接近我只是无法从列表中获取正确的字符串..它要么获取整个列表,要么只是其中的一个字母....

4

3 回答 3

3

使用random.choice

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)如果您需要多次获取线路,您也可以使用。

于 2012-10-18T19:50:32.047 回答
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) )
于 2012-10-18T19:47:51.810 回答
0

我假设每个侮辱都是文件中的一行,但是如果它们在第一行以空格分隔,我们可以替换为,我们可以添加一些忽略readlines等。但想法仍然相同。readlines[0].split()\n

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])
于 2012-10-18T19:44:28.323 回答