问题描述
我最近开始学习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
解决方法
如python中提到的doc,print
函数为--
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
,
这是因为 ,
中的 print(notFormatted,formatted)
在两个打印的东西之间放置了一个空格。由于您的 notFormatted
末尾有一个 \n
,然后 python 放置了空格,因此您打印的行在新行之后有一个空格。
试试这个:print(notFormatted + formatted)