HOWTO · Python
在 Python 中打印中间没有空格的值
了解如何在 Python 中打印值之间没有空格:使用 print() 的 sep 参数、f 字符串、str.format()、% 格式化、字符串拼接和字符串 Template 替换。
本页内容
当您将多个参数用逗号分隔传递给 print() 函数时,print() 默认会用一个空格将它们连接起来,这有时会导致值之间出现不必要的空格。幸运的是,Python 提供了几种替代方法,可以帮助您精确控制这种间距。
在本指南中,您将学习在 Python 中打印值之间没有空格的不同方法。每种方法都以同一个贯穿示例展示,该示例从下面的逗号形式开始:
x = 10
print('The number of mangoes I have is "', x, '"')
输出:
The number of mangoes I have is " 10 "
注意数字 10 与其周围双引号之间的不必要空格:每个逗号产生一个。以下每种方法的目标都是在打印相同值的同时消除这种多余的间距。
使用带模 % 符号的字符串格式化在 Python 中打印中间没有空格的值
% 符号,也称为字符串格式化或插值运算符,是 Python 中最古老的格式化方法。字符串内的 %d 等占位符标记了值的位置,% 运算符后面的值会替换它,因此不会在任何地方添加分隔符:
x = 10
print('The number of mangoes I have is "%d"' % x)
输出:
The number of mangoes I have is "10"
在这里,%d 是整数的占位符。当字符串被构建时,它会被替换为 x 的值,即 10,打印的文本直接与引号相接。这种风格在 Python 3 中仍然有效,但较新的代码通常更喜欢 str.format() 或 f 字符串。
使用带 str.format() 函数的字符串格式化在 Python 中打印中间没有空格的值
使用 str.format() 时,字符串内的大括号 {} 标记了替换值的位置。该方法在 Python 3 中引入,能高效地处理复杂的格式化;由于完成后的字符串是传递给 print() 的单个参数,因此不会出现分隔符:
x = 10
print('The number of mangoes I have is "{}"'.format(x))
输出:
The number of mangoes I have is "10"
{} 占位符位于双引号内,当字符串显示时会被替换为 x 的值。对于新代码,建议使用 str.format() 而不是较旧的 % 运算符。
使用字符串拼接在 Python 中打印中间没有空格的值
+ 运算符,即字符串拼接运算符,将字符串首尾相连,并且不会在它们之间添加任何内容,这使它成为逗号分隔的直接替代方案:
x = 10
print('The number of mangoes I have is "' + str(x) + '"')
输出:
The number of mangoes I have is "10"
拼接只能在字符串之间进行,因此整数 x 首先用 str() 转换。然后这些片段形成一个字符串 — 'The number of mangoes I have is "'、'10' 和 '"' — 并且 print() 按原样输出它。
使用 f-string 进行字符串格式化在 Python 中打印中间没有空格的值
Python 3.6 引入了 f 字符串,它将表达式直接嵌入字符串字面量中。它们也比上面另外两种格式化方法更快,因为值在构建字符串时就会被求值:
x = 10
print(f'The number of mangoes I have is "{x}"')
输出:
The number of mangoes I have is "10"
字符串前面的 f 前缀将其变成 f 字符串,其中的 {x} 在代码运行时被替换为 x 的值。由于变量恰好位于其文本应出现的位置,因此结果简洁、可读,且没有多余的空格。
使用 print 语句的 sep 参数在 Python 中打印中间没有空格的值
如果您想保留逗号分隔的参数,请更改 print() 在它们之间放置的内容。sep 参数在 Python 3 中可用,它是插入到参数之间的分隔符;默认为单个空格:
x = 10
print('The number of mangoes I have is "', x, '"', sep="")
输出:
The number of mangoes I have is "10"
将 sep 设置为空字符串 "" 会告诉 print() 将各部分 — 开引号之前的文本、x 的值和闭引号 — 以它们之间没有任何内容的方式连接起来。这是对原始逗号形式的最小改动:参数保持不变,只是移除了分隔符。
使用模板字符串进行字符串插值在 Python 中打印中间没有空格的值
Python 的 string.Template 类将值插值到模板字符串中:以 $ 开头的占位符会被替换为您提供的值,并且不会在其周围添加任何内容:
from string import Template
x = 10
template = Template('The number of mangoes I have is "$x"')
result = template.substitute(x=x)
print(result)
输出:
The number of mangoes I have is "10"
在这里,$x 是 x 值的占位符。调用 template.substitute(x=x) 会将其替换为 10,而 print(result) 会精确地输出完成后的字符串 — The number of mangoes I have is "10",不添加引号或空格。模板字符串最常在模板本身来自用户或文件时使用,因为它们的替换规则刻意保持简单。
结论
原始示例中的空格来自 print() 本身:对于逗号分隔的参数,它会插入 sep 分隔符,其默认为一个空格。您可以通过更改分隔符(sep="")、在打印前构建整个字符串(使用 f 字符串、str.format()、% 运算符、拼接或 string.Template),或者结合这两种思路来消除它们。对于日常代码,f 字符串是最具可读性的选择,而当参数已经就位时,sep="" 是最快的修复方法。