【问题标题】:F string is adding new lineF 字符串正在添加新行
【发布时间】:2021-04-10 07:58:29
【问题描述】:

我正在尝试制作一个名称生成器。我正在使用 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

谁能解释一下为什么会这样?

【问题讨论】:

  • 每个名称的末尾是否有换行符?
  • @MisterMiyagi 名称末尾必须有换行符
  • @Programmer 好吧,猜猜我为什么要问...

标签: python-3.x f-string


【解决方案1】:

代码似乎正确,可能是列表元素中的换行符 (\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 文件中提取了值,因此列表本身的元素中有换行符。我使用 .strip() 来解决这个问题。 print(f"生成的随机名称为:\n{random.choice(firstname_list).strip()} {random.choice(surname_list).strip()}")
【解决方案2】:

由于我从 UTF-8 编码的 .txt 文件中提取了这些值,因此 readlines() 确实将名称转换为列表元素,但其中有一个隐藏的 '\xa0\n'。

这导致了这个特殊的打印问题。使用 .strip() 有助于删除空格。

print(f"Random Name Generated is:\n{random.choice(firstname_list).strip()} {random.choice(surname_list).strip()}")

【讨论】:

    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    相关资源
    最近更新 更多