我偶尔会使用Python字符串格式。这可以这样做:
print('int: %i. Float: %f. String: %s' % (54, 34.434, 'some text'))
但是,这也可以这样做:
print('int: %r. Float: %r. String: %r' % (54, 34.434, 'some text'))
以及使用%s:
print('int: %s. Float: %s. String: %s' % (54, 34.434, 'some text'))
因此,我的问题是:为什么我会使用除%r或%s以外的任何其他内容?其他选项(%i,%f和%s)对我来说似乎没用,所以我只是想知道为什么每个人都会使用它们?
[edit]添加了%s的示例
答案 0 :(得分:7)
对于浮点数,repr
和str
的值可能会有所不同:
>>> num = .2 + .1
>>> 'Float: %f. Repr: %r Str: %s' % (num, num, num)
'Float: 0.300000. Repr: 0.30000000000000004 Str: 0.3'
对字符串使用%r
会在其周围生成引号:
>>> 'Repr:%r Str:%s' % ('foo','foo')
"Repr:'foo' Str:foo"
您应该始终使用%f
表示浮点数,%d
表示整数。
答案 1 :(得分:4)
@AshwiniChaudhary回答了有关旧字符串格式的问题,如果您要使用新的字符串格式,请执行以下操作:
>>> 'Float: {0:f}. Repr: {0!r} Str: {0!s}'.format(.2 + .1)
'Float: 0.300000. Repr: 0.30000000000000004 Str: 0.3'
实际上!s
是默认值,因此您不需要它,最后一种格式可以是{0}
答案 2 :(得分:2)
与其他人一起,你可以更好地控制你的结果。
在the docs中,他们会准确地告诉您如何微调结果,例如
>>> "%x-%5x-%#5x-%05x-%#05x" % (12,12,12,12,12)
'c- c- 0xc-0000c-0x00c'
答案 3 :(得分:0)
如果'%f' % variable
不是数字,您可以使用variable
会引发异常的事实。