2017-01-02 3 views
0

私はいくつかの卓上ゲームプレイの居酒屋のためのランダムな名前を生成するGUIを書いています。私はこのようなものを持っている.txtドキュメントを持っています。python3で ' n'、[、and]を削除する

Red 
Green 
Yellow 
Resting 
Young 

そして

King 
Dragon 
Horse 
Salmon 

私が読んで、ランダムに私は私が手出力が

The['Young\n']['Salmon\n'] 

のようになります。次

x = 1 
tavern1 = open('tavnames1.txt', 'r') 
name1 = tavern1.readlines() 
tav1 = random.sample(name1, int(x)) 
tav1 = str(tav1) 
tav1 =tav1.strip() 
tav1 =tav1.replace('\n', '') 


tavern2 = open('tavnames2.txt', 'r') 
name2 = tavern2.readlines() 
tav2 = random.sample(name2, int(x)) 
tav2 = str(tav2) 


TavernName = 'The' + tav1 + tav2 


print(TavernName) 

を使用してそれらを一緒に参加しています.replace()を使ってみました。文字列の.strip()は動作しません。

アイデア?

乾杯。

+0

'tav1 [0] .strip()'を実行して、 'tav1'と' tav2'の最初の値を取ってください。 '.strip()'は '\ n'を処理します。 – Mathias711

+0

申し訳ありませんが、私はあまりにもPythonに流暢ではありませんよ、もう少し詳しく教えてください。 – user1630350

+0

'sample()'は常に1つの要素を持っていてもリストを返すので、 'tav1'と' tav2'はリストで、 'str()'を使ってテキストに変換します。 'tav1 = tav1 [0]'または 'random.choice(name1)'を使って1つの要素だけを取得してください。 – furas

答えて

0

tav1tav2の最初の値をtav1[0].strip()とします。 .strip()\nを処理します。

random.sampleを入力すると、値の一覧が表示されます。 1つのサンプルだけを取るので、 "Young"の例では、その中に1つの項目だけのリストが表示されます。しかし、それはリストにあるので、それはより多くのようです["Young"]"Young"にのみアクセスするには、リストから最初の(そして唯一の)項目を、tav1[0]としてください。

+0

'random.choice(your_list)'を使ってリストから1つのランダムな項目を得ることもできます – Guillaume

+0

ああ、今理解しています。ありがとう!これは治療になりました – user1630350

3

sample()は、常に1つの要素があってもリストを返します。そしてstr()を使用してリストを文字列に変換し、Pythonが[ ]を追加し、strip()が動作しません。これは\nが文字列の最後にないためです。

しかし、random.choice()は1つの要素しか返さないため、文字列に変換する必要はなく、[ ]を取得しません。そして、あなたは\n

tavern1 = open('tavnames1.txt') 
name1 = tavern1.readlines() 
tav1 = random.choice(name1).strip() 

tavern2 = open('tavnames2.txt') 
name2 = tavern2.readlines() 
tav2 = random.choice(name2).strip() 

tavern_name = 'The {} {}'.format(tav1, tav2) 

print(tavern_name) 
3

を削除するstrip()を使用することができます改行を取り除くための方法は、ファイル全体を読み込み、splitlines()を使用することです:(Reading a file without newlinesを参照)

tavern1 = open('tavnames1.txt', 'r') 
name1 = tavern1.read().splitlines() 

ランダムなアイテムを選択するにはname1のリストのうちtav1 = random.choice(name1)https://docs.python.org/3.6/library/random.html#random.choiceを参照)を使用できます。

関連する問題