删除python3

时间:2017-01-02 09:35:03

标签: python python-3.x tkinter

我正在编写一个GUI,它会为某些桌面游戏玩法生成酒馆的随机名称。我有.txt文档有类似的东西。

Red
Green
Yellow
Resting
Young

并且

King
Dragon
Horse
Salmon

我正在阅读并使用以下

随机加入它们
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)

我得到的输出看起来像

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

我已尝试在字符串上使用.replace()和.strip(),但它似乎无法正常工作。

有什么想法吗?

干杯。

3 个答案:

答案 0 :(得分:3)

sample()总是返回列表 - 即使有一个元素。并且您使用str()将列表转换为字符串,以便Python添加[ ],而strip()不起作用,因为\n不在字符串的末尾。

但是您可以使用仅返回一个元素的random.choice() - 因此您不必转换为字符串而您不会获得[ ]。然后,您可以使用strip()删除\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)

答案 1 :(得分:3)

摆脱换行符的一种方法是阅读整个文件并使用undefined :(参见Reading a file without newlines

splitlines()

要选择列表tavern1 = open('tavnames1.txt', 'r') name1 = tavern1.read().splitlines() 中的随机项,您可以使用name1(请参阅https://docs.python.org/3.6/library/random.html#random.choice)。

答案 2 :(得分:0)

通过tav1获取tav2tav1[0].strip()的第一个值。 .strip()负责\n

通过获取random.sample,您可以获得值列表。因为您只获取一个样本,所以在您的示例“Young”中,您将获得一个只包含一个项目的列表。但是,它位于列表中,因此它更像["Young"]。要仅访问"Young",请通过说tav1[0]来获取列表中的第一个(也是唯一的)项。