0

Python でテキスト ファイルをリストとして開いて使用する際に問題が発生しています...テキスト ファイル (それぞれ 50 語)、3 つのテキスト ファイルで文字列値を使用する必要があります...そして、ランダムな単語を使用する必要があります毎回侮辱を作成するために各テキストファイル....(知っている人のためのシェイクスピアの侮辱)

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

それが私がこれまでに持っているものであり、リストから正しい文字列を取得できないだけで、本当に近いと感じています..リスト全体を取得するか、リストから1文字だけを取得します....

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

各 insult はファイル内の行であると想定していますが、最初の行でスペースで区切られている場合は置き換えることreadlinesreadlines[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 に答える
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 に答える