【问题标题】:Why does python puts a space in front of my formatted string为什么python在我的格式化字符串前面放一个空格
【发布时间】:2021-01-21 21:06:18
【问题描述】:

我最近开始学习python,发现它非常有趣。但是,当我尝试格式化字符串时,f"{var}..." 前面有一个多余的空间。

这是我的代码:

# Formatted Strings
segment1 = "First segment"
segment2 = "Second segment"
notFormatted = "First: " + segment1 + " Second: " + segment2 + "\n"  # This is hard to read / maintain
formatted = f"First: {segment1} Second: {segment2} \n"  # This approach is much cleaner
print(notFormatted, formatted)  # Should output same text

我得到了什么:[在控制台中]

First: First segment Second: Second segment
 First: First segment Second: Second segment 

如上图第二行以空格开始,以空格结束 我知道我可以使用 strip 功能来删除它,但我很好奇它为什么会在那里。是因为\n吗?


更新:

# Formatted Strings
segment1 = "First segment"
segment2 = "Second segment"
notFormatted = "First: " + segment1 + " Second: " + segment2 + "\n".strip()  # This is hard to read / maintain
formatted = f"First: {segment1} Second: {segment2} \n".strip()  # This approach is much cleaner
print(notFormatted, formatted)  # Should output same text

这段代码的输出将两行合并在一起,我应该如何解决这个问题?

【问题讨论】:

  • 试试print(notFormatted + formatted)(更简单的例子:print(1, 2))。
  • print(notFormatted, formatted, sep="")
  • 是的,原因是您提交了一对字符串 - 试试 print ( "a", "b") - print 语句打印它们的方式与打印单个字符串 print("a" + "b") 的方式不同。

标签: python string formatted-text


【解决方案1】:

如python中提到的docprint function as--

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

所以打印函数采用' ' 的默认分隔符,这就是你获得额外空间的原因。你可以删除它

print(notFormatted, formatted, sep='')  # Should output same text

输出

First: First segment Second: Second segment
First: First segment Second: Second segment 

【讨论】:

    【解决方案2】:

    这是因为print(notFormatted,formatted) 中的, 在两个打印的东西之间放置了一个空格。并且由于您的 notFormatted 在末尾有一个 \n,然后 python 放置了空格,因此您的打印行在新行之后有一个空格。

    试试这个:print(notFormatted + formatted)

    【讨论】:

    • 我不认为这是, 之后/之前的空格,因为我在问这个问题之前尝试了这些:)
    • 这不是,之后的空格,而是默认情况下打印有一个空格作为分隔符,所以这就是你得到空格的原因......
    • python 代码中的空格没有任何区别。相反,打印函数在, 所在的位置放置一个空格。试试print("1","2")print("1"+"2")
    • @LaraIpek 这不是正确的表达方式。 "," 只是分隔函数参数。并且当您执行print("1"+"2") 时,首先评估参数,由于字符串连接,该参数变为“12”。然后 print 被称为 print("12")
    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 2010-11-08
    相关资源
    最近更新 更多