【发布时间】:2015-04-24 12:30:49
【问题描述】:
我想知道如何在打印某些内容时删除额外的空格。
就像我做的那样:
print 'Value is "', value, '"'
输出将是:
Value is " 42 "
但我想要:
Value is "42"
有什么办法吗?
【问题讨论】:
标签: python whitespace python-2.x
我想知道如何在打印某些内容时删除额外的空格。
就像我做的那样:
print 'Value is "', value, '"'
输出将是:
Value is " 42 "
但我想要:
Value is "42"
有什么办法吗?
【问题讨论】:
标签: python whitespace python-2.x
如果您不想使用空格,请不要使用 print ...,(带有尾随逗号)。使用字符串连接或格式化。
串联:
print 'Value is "' + str(value) + '"'
格式:
print 'Value is "{}"'.format(value)
后者更加灵活,请参阅str.format() method documentation 和Formatting String Syntax section。
你还会遇到老的% formatting style:
print 'Value is "%d"' % value
print 'Value is "%d", but math.pi is %.2f' % (value, math.pi)
但这不如新的str.format() 方法灵活。
在 Python 3.6 及更高版本中,您将使用格式化字符串 (f-string):
print(f"Value is {value}")
【讨论】:
''.format 样式更可取,因为它避免了几个与% 样式相关的边缘情况,例如隐式提升到unicode 和无意的% tuple、% dict 使用。
str.format() 支持自定义格式的类;例如,您无法像使用 str.format() 那样轻松地使用 % 格式化 datetime 对象。然后是递归字段定义(可以使用字段来确定其他字段的格式)等
只是一个简单的未来答案,我发现它作为初学者很容易使用:
类似于使用end='' 来避免换行,您可以使用sep='' 来避免空格......对于这里的这个问题,它看起来像这样:
print('Value is "', value, '"', sep = '')
愿它在未来对某人有所帮助。
【讨论】:
提供额外空白的是逗号。
一种方法是使用字符串%方法:
print 'Value is "%d"' % (value)
类似于 C 中的 printf,允许您通过在字符串本身中使用格式说明符来合并和格式化 % 之后的项目。另一个例子,展示了多个值的使用:
print '%s is %3d.%d' % ('pi', 3, 14159)
无论如何,Python 3 允许您为单个 print 调用指定分隔符和终止符,从而大大改善了这种情况:
>>> print(1,2,3,4,5)
1 2 3 4 5
>>> print(1,2,3,4,5,end='<<\n')
1 2 3 4 5<<
>>> print(1,2,3,4,5,sep=':',end='<<\n')
1:2:3:4:5<<
【讨论】:
% 插值容易出现tuples 和其他特殊行为的错误。
.format 在新用户可能遇到的 99.999% 的 Python 安装中没有任何边缘情况的原因,是对新手更友好的解决方案-
https://docs.python.org/2/library/functions.html#print
print(*objects, sep=' ', end='\n', file=sys.stdout)
注意:此函数通常不能作为内置函数使用,因为名称 print 被识别为 print 语句。要禁用该语句并使用 print() 函数,请在模块顶部使用以下未来语句:
从未来导入打印函数
【讨论】:
以 Martjin 所说的话为基础。 我会使用字符串插值/格式化。
在 Python 2.x 中,由于您执行的 print 函数周围没有括号,这似乎是您正在使用的:
print 'Value is "%d"' % value
在 Python 3.x 中,您将改用 format 方法,因此您的代码将如下所示。
message = 'Value is "{}"'
print(message.format(value))
【讨论】:
>>> value=42
>>> print "Value is %s"%('"'+str(value)+'"')
Value is "42"
【讨论】:
" 字符
repr 或者,在本例中为 %r