本问题已经有最佳答案,请猛点这里访问。
我想知道如何删除额外的空间,当我打印的东西。
就像我这样做:
1print 'Value is"', value, '"'
输出将是:
1Value is" 42"
但我想要:
1Value is"42"
有什么办法吗?
如果不需要空格,请不要使用print ...,。使用字符串串联或格式。
级联:
1print 'Value is"' + str(value) + '"'
格式化:
1print 'Value is"{}"'.format(value)
后者更为灵活,请参阅str.format()方法文档和格式化字符串语法部分。
您还将看到旧的%格式样式:
1
2print 'Value is"%d"' % value
print 'Value is"%d", but math.pi is %.2f' % (value, math.pi)
但这并不像新的str.format()方法那么灵活。
哦,好吧,我不知道,只是学了Python,谢谢你的快速回答!
''.format样式更可取,因为它避免了几种与%样式相关的边缘情况,例如隐式提升到unicode和无意的% tuple和% dict用法。
@J.F.Sebastian:更不用说str.format()支持自定义类格式;例如,您不能像使用str.format()那样使用%轻松格式化datetime对象。然后是递归字段定义(您可以使用字段确定其他字段的格式)等。
只是一个简单的未来答案,我发现它很容易作为一个开端使用:类似于使用end=''来避免新行,您可以使用sep=''来避免空白……对于这里的问题,它看起来是这样的:print('Value is"', value, '"', sep = '')
希望它将来能帮助别人。
谢谢您!这帮我解决了一个困扰我很久的问题
这是Python3特有的语法。
非常有用的提示
逗号提供了额外的空白。
一种方法是使用字符串%方法:
1print 'Value is"%d"' % (value)
这类似于c中的printf,允许您使用字符串本身的格式说明符合并和格式化%之后的项。另一个示例显示了多个值的使用:
1print '%s is %3d.%d' % ('pi', 3, 14159)
就其价值而言,python 3允许您为单个print调用指定分隔符和终止符,从而大大改善了这种情况:
1
2
3
4
5
6
7
8
9
10>>> print(1,2,3,4,5)
1 2 3 4 5
>>> print(1,2,3,4,5,end='<<
')
1 2 3 4 5<<
>>> print(1,2,3,4,5,sep=':',end='<<
')
1:2:3:4:5<<
%插值容易出现tuple的错误和其他特殊行为。
然而,不知怎么的,我设法拼凑出代码,让它第一次工作。是的,您必须了解所使用工具的缺点。在任何领域都是如此。我不是那种倾向于将任意类型传递给格式化操作的开发人员:—)
这就是为什么新用户可以在99.999%的python安装中不使用任何边缘案例的.format是更为新的友好型解决方案的原因。-
安蒂。呃,只是利息,其他0.001%是什么?或者,这仅仅是对宣称确定性的沉默?不是说我有这个问题,我以前就做过。
这意味着,可能有人在学习Python来维护一个运行并坚持使用<=2.5或Jython2.5的解决方案。
这非常有效:print(1,2,3,4,5,sep='',end='<
https://docs.python.org/2/library/functions.html打印
打印(*objects,sep='',end='',file=sys.stdout)
注意:此函数通常不作为内置函数使用,因为名称print被识别为print语句。要禁用该语句并使用print()函数,请在模块顶部使用下面的语句:
从未来导入打印功能
以巩固马金的话。我将使用字符串插值/格式化。
在python 2.x中,由于打印函数周围缺少圆括号,您似乎正在使用它:
1print 'Value is"%d"' % value
在python 3.x中,您将使用格式化方法,所以您的代码应该是这样的。
1
2message = 'Value is"{}"'
print(message.format(value))
1
2
3
4
5>>> value=42
>>> print"Value is %s"%('"'+str(value)+'"')
Value is"42"
不需要有额外的连接,只需要获得"字符
用户repr或,在这种情况下,%r。