问题描述
我正在尝试制作名称生成器。我使用 F 字符串连接名字和姓氏。但我没有将它们放在一起,而是将它们放在一个新的行中。
print(f"Random Name Generated is:\n{random.choice(firstname_list)}{random.choice(surname_list)}")
输出如下:
Random Name Generated is:
Yung
heady
代替:
Random Name Generated is:
Yung heady
谁能解释一下为什么会这样?
解决方法
代码看起来是正确的,可能是列表元素中的换行符 (\n) 字符。 检查列表的字符串。
import random
if __name__ == '__main__':
firstname_list = ["yung1","yung2","yung3"]
surname_list = ["heady1","heady2","heady3"]
firstname_list = [name.replace('\n','') for name in firstname_list]
print(f"Random Name Generated is:\n{random.choice(firstname_list)} {random.choice(surname_list)}")
输出:
Random Name Generated is:
yung3 heady2
,
由于我从 UTF-8 编码的 .txt 文件中提取了这些值,所以 readlines() 确实将名称转换为列表元素,但其中包含一个隐藏的 '\xa0\n'。
这导致了这个特殊的打印问题。使用 .strip() 有助于删除空格。
print(f"Random Name Generated is:\n{random.choice(firstname_list).strip()} {random.choice(surname_list).strip()}")