我正在编写一个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(),但它似乎无法正常工作。
有什么想法吗?
干杯。
答案 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
获取tav2
和tav1[0].strip()
的第一个值。 .strip()
负责\n
。
通过获取random.sample
,您可以获得值列表。因为您只获取一个样本,所以在您的示例“Young”中,您将获得一个只包含一个项目的列表。但是,它位于列表中,因此它更像["Young"]
。要仅访问"Young"
,请通过说tav1[0]
来获取列表中的第一个(也是唯一的)项。